onItemClickListener entre dos fragmentos

Soy muy nuevo con android. Lo he intentado pero no puedo descubrir lo que me estoy perdiendo. Estoy usando dos fragmentos, dos muestran la lista. Ahora quiero cambiar los datos de la lista en el segundo fragmento cuando el usuario haga clic en el primer elemento de la lista. Por defecto, se seleccionará el índice de posición cero para mostrar los datos en la segunda lista. Estoy usando un adaptador de matriz personalizado para mostrar la lista en ambos fragmentos. Por favor, ayúdenme chicos. Gracias por considerar. Aquí estoy pegando mi código:

Clase de actividad:

   public class ProductListActivity extends Activity implements ProductInterface {
public static String cookie;
public static String jsonSettingsResponse;
public static String[] tids;
public static String jsonPorductsCategoryListResponseString;
public JSONArray jsonPorductsCategoryListResponseArray;
public static String vid;
public static String publicPath;
public static JSONArray productsList;
public ArrayList<String> listItems;
public String[] listProCategory;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.product_category_and_list);
    Intent intent = getIntent();
    cookie = intent.getStringExtra(BConstant.WEB_SERVICES_COOKIES);
    productsList = new JSONArray();

    FetchProductCategories products = new FetchProductCategories();
    productsList = products.fetchProducts();
    listProCategory = products.onDisplayProductList(productsList).toArray(
            new String[0]);

    Bundle bundle = new Bundle();
    bundle.putString(BConstant.WEB_SERVICES_COOKIES, cookie);
    bundle.putString(BConstant.PUBLIC_PATH, publicPath);
    bundle.putStringArray(BConstant.TAXONOMY_TID, tids);
    bundle.putStringArray(BConstant.PRODUCT_CATEGORY_NAMES,
            listProCategory);
    ProductCategoryFragment.newInstance(bundle);
    Bundle bundleForProductList = new Bundle();
    bundleForProductList.putStringArray(BConstant.TAXONOMY_TID, tids);
    bundleForProductList.putString(BConstant.WEB_SERVICES_COOKIES, cookie);
    ProductListFragment.newInstance(bundleForProductList);
}


private class FetchProductCategories {
    protected JSONArray fetchProducts(String... params) {
        jsonSettingsResponse = WebserviceBUtil
                .callWebServicesGetVocabularyList(cookie);
        vid = JSONUtil.parseJSONResponse(jsonSettingsResponse,
                BConstant.TAXONOMY_VID);
        publicPath = JSONUtil.parseJSONResponse(jsonSettingsResponse,
                BConstant.PUBLIC_PATH);
        jsonPorductsCategoryListResponseString = WebserviceBUtil
                .callWebServicesGetProductsCategoryList(cookie, vid);
        tids = ProductCategoryIds.parseJSONResponseToGetTidsOfProducts(
                jsonPorductsCategoryListResponseString,
                BConstant.TAXONOMY_TID);
        try {
            jsonPorductsCategoryListResponseArray = new JSONArray(
                    jsonPorductsCategoryListResponseString);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonPorductsCategoryListResponseArray;
    }


    protected ArrayList<String> onDisplayProductList(JSONArray result) {
        listItems = new ArrayList<String>();
        for (int i = 0; i < result.length(); i++) {
            try {
                listItems
                        .add(result.getJSONObject(i)
                                .getString(BConstant.NAME_CONSTANT)
                                .toString());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return listItems;
    }
}


@Override
public HashMap<Integer, Bitmap> DownloadImages(
        HashMap<Integer, String> productCategoryImagePath) {
    HashMap<Integer, Bitmap> imgBitmap = new HashMap<Integer, Bitmap>();
    for (int pos = 0; pos < productCategoryImagePath.size(); pos++) {
        Bitmap bval = ImageDownloader
                .getBitmapFromURL(productCategoryImagePath.get(pos));
        imgBitmap.put(pos, bval);
    }
    return imgBitmap;

}

@Override
public void clickedProductCategory(String tid) {
    FragmentManager productListFragmentManager = getFragmentManager();
    ProductListFragment productListFragment = (ProductListFragment) productListFragmentManager
            .findFragmentById(R.id.proListfragment);
    productListFragment.clickedProductCategoryIdByProductCategoryFragment(tid);

}

}

Primer Fragmento:

    public class ProductCategoryFragment extends Fragment implements OnItemClickListener{
ProductInterface productInterface;
private static String[] tids;
private static HashMap<Integer, String> productCategoryImagePath;
private static String jsonPorductsDetailsImagePathResponse;
private static String publicPath;
private static String cookie;
public static String[] listProCategory;
public  ListView listOfProductsCategory;
private static HashMap<Integer, Bitmap> imgBitmapUrls;
DisplayProductCategoryListArrayAdapter adapter;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
     View fragProcatView = inflater.inflate(R.layout.product_category_list, container,
                false);

listOfProductsCategory =(ListView) fragProcatView .findViewById(R.id.productCategorylistView);
    return fragProcatView;

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    productInterface = (ProductInterface) getActivity();
    productCategoryImagePath = new HashMap<Integer, String>();
    for (int i = 0; i < tids.length; i++) {
        jsonPorductsDetailsImagePathResponse = WebserviceBUtil
                .callWebServicesGetProductsDetails(cookie, tids[i]);
        String filename = ProductCategoryIds
                .parseJSONResponseToGetVidOfProductsFromVocabulary(
                        jsonPorductsDetailsImagePathResponse,
                        BConstant.FILE_NAME);
        String completeUrl = publicPath + filename;
        productCategoryImagePath.put(i, completeUrl);
    }
    imgBitmapUrls = productInterface
            .DownloadImages(productCategoryImagePath);
     adapter = new DisplayProductCategoryListArrayAdapter(
                getActivity(), listProCategory,
                imgBitmapUrls);
    listOfProductsCategory.setAdapter(adapter);
    listOfProductsCategory.setOnItemClickListener(this);
}
 static ProductCategoryFragment newInstance(Bundle bundle) {
        ProductCategoryFragment productCategoryFragment = new ProductCategoryFragment();
        productCategoryFragment.setArguments(bundle);
        cookie = bundle.getString(BConstant.WEB_SERVICES_COOKIES);
        tids = bundle.getStringArray(BConstant.TAXONOMY_TID);
        publicPath = bundle.getString(BConstant.PUBLIC_PATH);
listProCategory = bundle.getStringArray(BConstant.PRODUCT_CATEGORY_NAMES);
        return productCategoryFragment;
    }

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    String clickedItemName = (String) listOfProductsCategory
            .getItemAtPosition(position);
    int clickedItemId = (int) listOfProductsCategory
            .getItemIdAtPosition(position);

    Toast.makeText(this.getActivity(),
            "Product is getting load : " + clickedItemName,
            Toast.LENGTH_SHORT).show();
        productInterface.clickedProductCategory(tids[clickedItemId]);
}


public class DisplayProductCategoryListArrayAdapter extends ArrayAdapter<String> {

    Context context;
    HashMap<Integer, Bitmap> prodctImgs;
    String[] proCategoryNames;
    HashMap<Integer, Bitmap>biturls;
    DisplayProductCategoryListArrayAdapter(Context c,
            String[] listCategory, HashMap<Integer, Bitmap> imgUrls) {
        super(c,
                R.layout.product_category_single_layout,
                R.id.productCategoryName, listCategory);
        this.context = c;
        this.prodctImgs = imgUrls;
        this.proCategoryNames = listCategory;
        this.biturls = imgUrls;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=((Activity)context).getLayoutInflater(); 
    View row = inflater.inflate(R.layout.product_category_single_layout, parent, false);
        ImageView productCategoryImage = (ImageView) row
                .findViewById(R.id.productCategoryImageId);
        Bitmap bitmap = imgBitmapUrls.get(position);
        // productCategoryImage.setFocusable(false);
        TextView productCategoryName = (TextView) row
                .findViewById(R.id.productCategoryName);
        productCategoryImage.setImageBitmap(bitmap);
        productCategoryName.setText(proCategoryNames[position]);
        return row;
    }
}
  }

Segundo fragmento:

    public class ProductListFragment extends Fragment implements OnItemClickListener{
private static HashMap<Integer, Bitmap> imgBitmapUrls;
public  ListView listOfProducts;
ProductInterface productInterfaceForProductList;
private static String jsonPorductsCategoryListResponse;
private static String cookie;
private static String[] productImgPath;
private static String[] nids;
private static String[] title;
private static String[] tids;
private String tid;
private static HashMap<Integer, String> productListImagePath;
DisplayProductListArrayAdapter proListAdapter;
@Override
 public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState ) {
     View fragProListView = inflater.inflate(R.layout.product_category_list, container,
                false);
     listOfProducts =(ListView) fragProListView .findViewById(R.id.productCategorylistView);
    return fragProListView;
    }

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    productInterfaceForProductList = (ProductInterface) getActivity();
    jsonPorductsCategoryListResponse = WebserviceBUtil.
            callWebServicesGetProductsList(cookie, tids[0]);
    nids = ProductCategoryIds.parseJSONResponseToGetTidsOfProducts(
            jsonPorductsCategoryListResponse,
            BConstant.PRODUCT_NODE_ID);
    title = ProductCategoryIds.parseJSONResponseToGetTidsOfProducts(
            jsonPorductsCategoryListResponse,
            BConstant.PRODUCT_TITLE);
    productImgPath = ProductCategoryIds.parseJSONResponseToGetTidsOfProducts(
            jsonPorductsCategoryListResponse,
            BConstant.PRODUCT_IMAGE);
            productListImagePath = new HashMap<Integer, String>();
            for(int i =0;i<productImgPath.length;i++){
                productListImagePath.put(i, productImgPath[i]);
            }
            System.out.println(productListImagePath);
    imgBitmapUrls = productInterfaceForProductList
            .DownloadImages(productListImagePath);

    proListAdapter = new DisplayProductListArrayAdapter(
                getActivity(), title,
                imgBitmapUrls);
     listOfProducts.setAdapter(proListAdapter);
     listOfProducts.setOnItemClickListener(this);
}
 static ProductListFragment newInstance(Bundle bundle) {
     ProductListFragment productListFragment = new ProductListFragment();
     productListFragment.setArguments(bundle);
        cookie = bundle.getString(BConstant.WEB_SERVICES_COOKIES);
        tids = bundle.getStringArray(BConstant.TAXONOMY_TID);
        return productListFragment;
    }
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub

}



public class DisplayProductListArrayAdapter extends ArrayAdapter<String> {

    Context context;
    HashMap<Integer, Bitmap> prodctImgs;
    String[] proCategoryNames;
    HashMap<Integer, Bitmap>biturls;
    DisplayProductListArrayAdapter(Context c,
            String[] listCategory, HashMap<Integer, Bitmap> imgUrls) {
        super(c,
                R.layout.products_list_single_layout,
                R.id.productCategoryName, listCategory);
        this.context = c;
        this.prodctImgs = imgUrls;
        this.proCategoryNames = listCategory;
        this.biturls = imgUrls;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=((Activity)context).getLayoutInflater(); 
View row = inflater.inflate(R.layout.products_list_single_layout, parent, false);
        ImageView productCategoryImage = (ImageView) row
                .findViewById(R.id.productImageId);
        Bitmap bitmap = imgBitmapUrls.get(position);
        // productCategoryImage.setFocusable(false);
        TextView productCategoryName = (TextView) row
                .findViewById(R.id.productName);
        productCategoryImage.setImageBitmap(bitmap);
        productCategoryName.setText(proCategoryNames[position]);
        return row;
    }
}

public void clickedProductCategoryIdByProductCategoryFragment(String tid){
    jsonPorductsCategoryListResponse = WebserviceBUtil.
            callWebServicesGetProductsList(cookie, tid);

}
 }

Respuestas a la pregunta(1)

Su respuesta a la pregunta