java - BaseAdapter in ListActivity isn't displaying the correct items -


i have listactivity in trying display imageview under list. i'm attempting creating own baseadapter , using 2 different methods inside getview method, 1 list , 1 imageview. managed imageview displayed under list how want it, problem having list isn't displayed correctly.

for reason item in list isn't on screen until user scrolls down gets populated wrong data so:

----top screen------ |     item 1       | |     item 2       | |     item 3       | |     item 4       | ----bottom screen--- |     item 1       |   <--items not on screen show |     item 1       |   <--as item 1 once user scrolls |     image view   |    

what should so:

----top screen------ |     item 1       | |     item 2       | |     item 3       | |     item 4       | ----bottom screen--- |     item 5       | |     item 6       | |     image view   | 

my custom baseadapter

    private class mycustomadapter extends baseadapter {         private static final int type_item = 0;         private static final int type_separator = 1;         private static final int type_max_count = type_separator + 1;          private arraylist<hashmap<string,string>> mdata = new arraylist<hashmap<string,string>>();         private layoutinflater minflater;             private treeset mseparatorsset = new treeset();          public mycustomadapter() {             minflater = (layoutinflater)getsystemservice(context.layout_inflater_service);         }          public void additem(final string header, final string message) {             hashmap<string,string> item = new hashmap<string,string>();             item.put(line_1, header);             item.put(line_2, message);              mdata.add(item);             notifydatasetchanged();         }          public void addimageitem() {             hashmap<string,string> item = new hashmap<string,string>();             item.put(line_1, "");             item.put(line_2, "");              mdata.add(item);             mseparatorsset.add(mdata.size() - 1);             notifydatasetchanged();         }          @override         public int getitemviewtype(int position) {             return mseparatorsset.contains(position) ? type_separator : type_item;         }          @override         public int getviewtypecount() {             return type_max_count;         }          public int getcount() {             return mdata.size();         }          public object getitem(int position) {             return mdata.get(position);         }          public long getitemid(int position) {             return position;         }          public view getview(int position, view convertview, viewgroup parent) {             viewholder vh = null;             int type = getitemviewtype(position);             system.out.println("getview " + position + " " + convertview + " type = " + type);             if (convertview == null) {                 vh = new viewholder();                 switch (type) {                     case type_item:                         convertview = minflater.inflate(r.layout.instructions_two_row, null);                         vh.header = (textview) convertview.findviewbyid(r.id.instructions_header);                         vh.message = (textview) convertview.findviewbyid(r.id.instructions_message);                         vh.header.settext((charsequence) mdata.get(position).get(line_1));                         vh.message.settext((charsequence) mdata.get(position).get(line_2));                         break;                     case type_separator:                         convertview = minflater.inflate(r.layout.instructions_image, null);                         vh.imageview = (imageview) convertview.findviewbyid(r.id.instuct_image);                         vh.imageview.setimagedrawable(getresources().getdrawable(r.drawable.instructions));                         break;                 }                 convertview.settag(vh);             }             else {                 vh = (viewholder) convertview.gettag();             }                        return convertview;         }        }      public static class viewholder {         public textview header;         public textview message;         public imageview imageview;     } 

thanks all!

getview recycles views scroll. if convertview not null, still need check correct type , set correct values on it.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -