建议在我们的应用中使用列表视图时使用查看回收和查看持有人模式。但我面临的问题是使用查看回收和查看持有人模式是当我尝试滚动列表视图时,列表项的顺序会随机干扰/更改。我不知道现在发生了什么。搜索了很多,但一无所获。在一个严重的需要..请帮助..提前感谢..
答案 0 :(得分:2)
首先:当convertView
为null
时,您没有创建新的ViewHolder。
第二个:您有一个ViewHolder实例作为该类的成员变量,并且您不断操纵此ViewHolder。屏幕上每个行项应该有一个ViewHolder实例,你应该只在getView()*中创建和操作ViewHolder **。
而不是:
private ViewHolder holder;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
holder = ...;
setData();
}
private void setData() {
holder.tv_name.setText(...);
// etc.
}
这样做:
// no private ViewHolder instance
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = ...; // create new or getTag
setData(holder);
}
private void setData(ViewHolder holder) {
holder.tv_name.setText(...);
// etc.
}