Android list with multiple list item layouts -
Android list with multiple list item layouts -
based on few tutorials, tried simple android app shows list strings. problem when tried introduce new layout list items.
so have:
listitem1 -> layout1
listitem2 -> layout2
listitem3 -> layout1
etc
when tried adding new layout, items became "scrambled" when scrolling. example, display item1, item2, item3, item4... , , when scrolling downwards , coming back, list be: item40, item3, item20, item1 etc
here's code have:
(the activity_main.xml file has linearlayout > listview)
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); items = new arraylist<string>(); (int = 0; < 50; i++){ items.add(i%2==0 ? "true" : "false"); } listview listview = (listview) findviewbyid(r.id.listviewid); listview.setadapter(new listitemadapter(this, android.r.layout.simple_list_item_1, items)); }
(list_item_1 , list_item_2 layouts textview)
public class listitemadapter extends arrayadapter<string> { private arraylist<string> items; private layoutinflater minflater; public listitemadapter(context context, int textviewresourceid, arraylist<string> items) { super(context, textviewresourceid, items); this.items = items; minflater = (layoutinflater)this.getcontext() .getsystemservice(context.layout_inflater_service); } @override public view getview(int position, view convertview, viewgroup parent) { int type = items.get(position).equals("true") ? 0 : 1; if (convertview == null) { switch(type){ case 1: convertview = minflater.inflate(r.layout.list_item_1, null); break; case 0: convertview = minflater.inflate(r.layout.list_item_2, null); break; } } string item = items.get(position); if (item != null) { switch(type){ case 1: textview text = (textview) convertview.findviewbyid(r.id.day); if (text != null) { text.settext(item); } break; case 0: textview day = (textview) convertview.findviewbyid(r.id.text); if (day != null) { day.settext(item); } break; } } homecoming convertview; } }
as can see, depending on item (true or false), alter layout.
any input appreciated!
btw, simplified illustration of i'm trying do...
please override getviewtypecount()
, getitemviewtype(int)
methods too. should work. please go through link android listview different layout each row.
android
Comments
Post a Comment