Custom array adapter in fragment

I am very new to Andrew. I tried so many times, but got stuck in this problem for a long time. I have an activity called ProductListActivity, and in this activity I have one fragment. Now I want to display the List, and for this I created my own array adapter. its work fine when I don't use fragments, but for fragments giving me a NullPointerException. I am debugging my code. Please help me with the guys. Thanks for attention. Here I insert my code.

Action class:

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 productCategoryFragment = new ProductCategoryFragment(); FragmentManager manager = getFragmentManager(); productCategoryFragment.setArguments(bundle); } 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 .callWebServicesGetProductsList(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; } } 

Fragment Class:

 public class ProductCategoryFragment extends Fragment { 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 String[] listProCategory; public ListView listOfProductsCategory; private static HashMap<Integer, Bitmap> imgBitmapUrls; DisplayProductListArrayAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View fragProcatView = inflater.inflate(R.layout.product_category_list, container, false); listOfProductsCategory = (ListView) getActivity().findViewById(R.id.productCategorylistView); return fragProcatView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); publicPath = getArguments().getString(BConstant.PUBLIC_PATH); cookie = getArguments().getString(BConstant.WEB_SERVICES_COOKIES); tids = getArguments().getStringArray(BConstant.TAXONOMY_TID); listProCategory = getArguments().getStringArray( BConstant.PRODUCT_CATEGORY_NAMES); Bundle b = getActivity().getIntent().getExtras(); publicPath = b.getString(BConstant.PUBLIC_PATH); cookie = b.getString(BConstant.WEB_SERVICES_COOKIES); tids =b.getStringArray(BConstant.TAXONOMY_TID); listProCategory =b.getStringArray( BConstant.PRODUCT_CATEGORY_NAMES); 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 DisplayProductListArrayAdapter( getActivity(), listProCategory, imgBitmapUrls); listOfProductsCategory.setAdapter(adapter); } /** * ExtendsArrayAdapterClassToDisplayCustomListView */ 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.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 = (LayoutInflater) context // .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 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; } } } 
+3
android
source share
1 answer

Edit

 listOfProductsCategory = (ListView) getActivity().findViewById(R.id.productCategorylistView); 

to

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

findViewById looking for a view with an identifier in the current fake layout. Therefore, use the view object to initialize the list.

Edit:

You do something like this

  static ProductCategoryFragment newInstance(int num) { ProductCategoryFragment f = new ProductCategoryFragment(); // Supply num input as an argument. Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); return f; } 

Then

 int value = getArguments().getInt("num"); 

In action

  ProductCategoryFragment newFragment = ProductCategoryFragment.newInstance(10); 
+2
source share

All Articles