java - Dynamically add items to list view using custom adapter for Android app -


so, right have custom adapter class takes in array of locations , adds them listview. fine , dandy, add locations listview after initialization. example, can "add location" , add listview. here main activity:

package com.example.listviewtest;  import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.listview;  public class mainactivity extends activity {  private listview listview1;  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      location location_data[] = new location[]     {         new location(r.drawable.ic_launcher, "location 1", "fruit!", "2 miles", "8-4 mon-fri\nclosed sun"),         new location(r.drawable.ic_launcher, "location 2", "veggies!", "2 miles", "8-5"),         new location(r.drawable.ic_launcher, "location 3", "plants!", "2 miles", "8-5"),         new location(r.drawable.ic_launcher, "location 4", "flowers!", "2 miles", "8-5"),         new location(r.drawable.ic_launcher, "location 5", "baked goods!", "2 miles", "8-5")     };     locationadapter adapter = new locationadapter(this,              r.layout.listview_item_row, location_data);     //adapter.add(new location(r.drawable.ic_launcher, "location 6", "veggies!", "2 miles", "8-5"));       listview1 = (listview)findviewbyid(r.id.listview1);      view header = (view)getlayoutinflater().inflate(r.layout.listview_header_row, null);     listview1.addheaderview(header);      listview1.setadapter(adapter); } } 

this works. want adapter.add(new location(r.drawable.ic_launcher, "location 6", "veggies!", "2 miles", "8-5")); after filling array.

here locationadapter class:

package com.example.listviewtest;  import android.app.activity; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.imageview; import android.widget.textview;  public class locationadapter extends arrayadapter<location>{  context context;  int layoutresourceid;     location data[] = null;  public locationadapter(context context, int layoutresourceid, location[] data) {     super(context, layoutresourceid, data);     this.layoutresourceid = layoutresourceid;     this.context = context;     this.data = data; }  @override public view getview(int position, view convertview, viewgroup parent) {     view row = convertview;     locationholder holder = null;      if(row == null)     {         layoutinflater inflater = ((activity)context).getlayoutinflater();         row = inflater.inflate(layoutresourceid, parent, false);          holder = new locationholder();         holder.imgicon = (imageview)row.findviewbyid(r.id.imgicon);         holder.txttitle = (textview)row.findviewbyid(r.id.txttitle);         holder.details = (textview)row.findviewbyid(r.id.details);         holder.distance = (textview)row.findviewbyid(r.id.distance);         holder.hours = (textview)row.findviewbyid(r.id.hours);          row.settag(holder);     }     else     {         holder = (locationholder)row.gettag();     }      location location = data[position];     holder.txttitle.settext(location.title);     holder.imgicon.setimageresource(location.icon);     holder.details.settext(location.details);     holder.distance.settext(location.distance);     holder.hours.settext(location.hours);      return row; }  static class locationholder {     imageview imgicon;     textview txttitle;     textview details;     textview distance;     textview hours; } } 

any ideas on how can implement this? thanks.

  1. in adapter change locations data[] array arraylist , override appropriate constructor
  2. in activity, make variable data field (type arraylist
  3. when add location can use data.add(location)
  4. then can call notifydatasetchanged() on adapter

example code: http://androidadapternotifiydatasetchanged.blogspot.in/


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -