Android RecyclerView,回收无法正常工作
我有一个RecyclerView
正在使用的。我以前用过RecyclerView
但从未遇到过这个问题。
当我上下滚动时,某些项目消失,而某些消失的项目再次出现在底部。
码:
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
重用Views,因此可以说是第一次onBindViewHolder()
调用info
is
null
。这将导致该行的可见度为View.GONE
。
当onBindViewHolder
又被称为绑定一个新行,该行的观点依然是View.GONE
-没有什么是复位之间势必行。
因此,您的if语句应完全重置状态:
if (info!= null) { viewHolder.txt.setText(info);
viewHolder.txt.setVisibility(View.VISIBLE);
} else {
viewHolder.txt.setVisibility(View.GONE);
}
这将确保正确设置每一行的可见性。
以上是 Android RecyclerView,回收无法正常工作 的全部内容, 来源链接: utcz.com/qa/398513.html