How to display a custom list using list fragments in android

I split my android screen into 2 fragmentations. In the first, I make a list from the server database on an Android android. The problem is that I cannot call the getview method in the base adapter class. help me

public class MyListFragment1 extends ListFragment { ImageView back; String url = Main.url; String Qrimage; Bitmap bmp; ListView list ; AppetiserFragment adapter; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.applistviewfragment, container, false); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // back=(ImageView)findViewById(R.id.backfoodmenu); /* * back.setOnClickListener(new OnClickListener() { * * public void onClick(View v) { // TODO Auto-generated method stub * Intent intent=new Intent(getApplicationContext(),FoodMenu.class); * intent.putExtra("url", url); startActivity(intent); } }); */ ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); InputStream is = null; String result = ""; JSONObject jArray = null; try { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url + "test.php3"); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { // TODO: handle exception Log.e("Log", "Error in Connection" + e.toString()); // Intent intent = new Intent(ViewQRCode.this, PimCarder.class); // startActivity(intent); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); jArray = new JSONObject(result); JSONArray json = jArray.getJSONArray("appetiser"); Context context = null; context = this.getActivity().getApplicationContext(); //(Here i want give lisid from xml) list=(Listview)findViewById(R.id.list);//i type here it shows an error adapter = new AppetiserFragment(context, json); context = getActivity().getApplicationContext(); list.setAdapter(adapter); } catch (Exception e) { // TODO: handle exception Log.e("log", "Error in Passing data" + e.toString()); } } 

}

Appetiserfragment.java

  public class AppetiserFragment extends BaseAdapter { String url = Main.url; public Context Context; String qrimage; Bitmap bmp, resizedbitmap; Bitmap[] bmps; Activity activity = null; private LayoutInflater inflater; private ImageView[] mImages; String[] itemimage; TextView[] tv; String itemname, price, desc, itemno; String[] itemnames, checkeditems, itemnos; String[] prices; String[] descs; HashMap<String, String> map = new HashMap<String, String>(); public AppetiserFragment(Context context, JSONArray imageArrayJson) { Context = context; // inflater = System.out.println(imageArrayJson); // (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // imageLoader=new ImageLoader(activity); inflater = LayoutInflater.from(context); this.mImages = new ImageView[imageArrayJson.length()]; this.bmps = new Bitmap[imageArrayJson.length()]; this.itemnames = new String[imageArrayJson.length()]; this.prices = new String[imageArrayJson.length()]; this.descs = new String[imageArrayJson.length()]; this.itemnos = new String[imageArrayJson.length()]; try { for (int i = 0; i < imageArrayJson.length(); i++) { JSONObject image = imageArrayJson.getJSONObject(i); qrimage = image.getString("itemimage"); itemname = image.getString("itemname"); itemno = new Integer(i + 1).toString(); price = image.getString("price"); desc = image.getString("itemdesc"); System.out.println(price);//here i can print price itemnames[i] = itemname; prices[i] = price; descs[i] = desc; itemnos[i] = itemno; byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, qrimageBytes.length); int width = 100; int height = 100; resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, true); bmps[i] = bmp; mImages[i] = new ImageView(context); mImages[i].setImageBitmap(resizedbitmap); mImages[i].setScaleType(ImageView.ScaleType.FIT_START); // tv[i].setText(itemname); } System.out.println(map); } catch (Exception e) { // TODO: handle exception } } public AppetiserFragment() { // TODO Auto-generated constructor stub } public int getCount() { return mImages.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(final int position, View convertView, ViewGroup parent) { View view = convertView; final ViewHolder viewHolder; if (view == null) { view = inflater.inflate(R.layout.appetiserlistview, null); System.out.println("prakash"); viewHolder = new ViewHolder(); viewHolder.image = (ImageView) view .findViewById(R.id.appetiserimage); viewHolder.text = (TextView) view.findViewById(R.id.appetisertext); viewHolder.desc = (TextView) view.findViewById(R.id.appetiserdesc); viewHolder.price = (TextView) view .findViewById(R.id.appetiserprice); viewHolder.appitemnum = (TextView) view .findViewById(R.id.appitemno); // viewHolder.checkbox = (CheckBox) view.findViewById(R.id.bcheck); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.image.setImageBitmap(bmps[position]); viewHolder.appitemnum.setText(itemnos[position]); viewHolder.price.setText(prices[position]); viewHolder.desc.setText(descs[position]); // viewHolder.checkbox.setTag(itemnames[position]); ViewHolder holder = (ViewHolder) view.getTag(); holder.text.setText(itemnames[position]); return view; } static class ViewHolder { protected TextView text, price, desc, appitemnum; protected ImageView image; } } 

I can print json data in adpater base class. Now I want to transfer json data to text, image. I thought the getview method is not calling. Please help me

+6
source share
3 answers

You can also use ListActivity instead of ListFragment. It will behave like normal activity, and you can easily find all the methods associated with the list.

like this..,

  public class MainActivity extends ListActivity { oncreate() { ** code ListView list = getListView(); **code } } 
+1
source

I think that when using a custom list with the identifier "R.id.list" you do not need to expand the fragment with listFragment only with the fragment.

another wise if you want use the listFragment , then use as in XML

 <ListView android:id="@id/android:list" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1.0" android:layout_marginTop="2dip" android:scrollingCache="false" android:clickable="true" android:cacheColorHint="#00000000" android:focusable="true" android:background="@drawable/listfocused" android:dividerHeight="1dip" xmlns:android="http://schemas.android.com/apk/res/android"/> 

in java get list like

 ListView list = this.getListView(); 
0
source
 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { ... list=(Listview)findViewById(R.id.list);//i type here it shows an error ... } 

This is because you are trying to find views in the onCreate() method; At this point, the fragment layout is not yet overstated, so all calls to findViewById() return null.

You can only find the view after inflating the layout found in onCreateView() . Therefore, override the onCreateView() method and call findViewById() and install the list adapter there!

0
source

Source: https://habr.com/ru/post/917589/


All Articles