java - Android RecyclerView, recycling not working properly -
i have recyclerview
using. have used recyclerview
before never had problem.
when scroll , down of items disappear, , of items disappear appear again in bottom.
code:
viewholder
:
public class viewholder extends recyclerview.viewholder { public textview txt; public viewholder(view view) { super(view); txt = (textview) view.findviewbyid(r.id.txt); } }
adapter
:
public class myadapter extends recyclerview.adapter<viewholder> { private final activity activity; private final arraylist<hashmap<string, string>> mitems; public myadapter (activity activity, arraylist<hashmap<string, string>> mitems) { this.activity = activity; this.mitems= mitems; } @override public viewholder oncreateviewholder(viewgroup viewgroup, int i) { return new viewholder(layoutinflater.from(activity).inflate(r.layout.items, viewgroup, false)); } @override public void onbindviewholder(viewholder viewholder, int position) { hashmap<string, string> item = mitems.get(position); string info = item.get("info "); if (info!= null) { viewholder.txt.settext(info); } else { viewholder.txt.setvisibility(view.gone); } } @override public int getitemcount() { return (null != mitems? mitems.size() : 0); } }
onbindviewholder
reuses views let's first time onbindviewholder()
called, info
null
. cause row have visibility of view.gone
.
when onbindviewholder
called again bind new row, view row still view.gone
- nothing reset between rows being bound.
therefore if statement should reset state completely:
if (info!= null) { viewholder.txt.settext(info); viewholder.txt.setvisibility(view.visible); } else { viewholder.txt.setvisibility(view.gone); }
this ensure each row's visibility set correctly.
Comments
Post a Comment