arrays - android ListView Simple Adapter, item repeating -
i created custom listview
, in java filled listview
simpleadapter
. here's code:
setcontentview(r.layout.activity_my); list = (listview) findviewbyid(r.id.lvlist); itemlist = new arraylist<hashmap<string, string>>(); itemmap = new hashmap<string, string>(); (int = 0; < songs.length; i++) { itemmap.put("song", songs[i]); itemmap.put("artist", artists[i]); system.out.println(songs[i] + " " + artists[i]); itemlist.add(itemmap); } simpleadapter adapter = new simpleadapter(this, itemlist, android.r.layout.simple_list_item_2, new string[] {"song", "artist"}, new int[] { android.r.id.text1, android.r.id.text2 }); list.setadapter(adapter);
now created 2 string arrays
song , artist respectively , put them in hashmap
, put hashmap
in arraylist
called itemlist
. after set adapter default list item id's in parameter.
the problem facing when run application, list view shows last item , subitem of string arrays repeatedly. here's image reference. my listview
i'd know why happening. tried putting itemlist.add(itemmap);
outside for()
loop still didn't work. appreciated proper explanation, cause i'm kinda new this. thank you!
you can achieve recreating itemmap
object @ every iteration. try following way.
itemmap = new hashmap<string, string>(); (int = 0; < songs.length; i++) { itemmap.put("song", songs[i]); itemmap.put("artist", artists[i]); system.out.println(songs[i] + " " + artists[i]); itemlist.add(itemmap); }
change
for (int = 0; < songs.length; i++) { itemmap = new hashmap<string, string>(); itemmap.put("song", songs[i]); itemmap.put("artist", artists[i]); system.out.println(songs[i] + " " + artists[i]); itemlist.add(itemmap); }
explaination:
refer here. note hashmap
key
value
pair means store value key. hashmap
not allow duplicate key. code youe have added value song
, artist
. can not add value these keys again. itemlist
add itemmap
@ every iteration. why list repeating same record. avoid problem re instantiate itemmap
object.
i hope you.
Comments
Post a Comment