gpt4 book ai didi

java - ListView 显示的项目与容器中的项目不同

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:23 25 4
gpt4 key购买 nike

我有一个扩展基本适配器的自定义适配器。它有多种不同的布局,有些带有缩略图,有些没有。当我添加与行之前的项目类型相同的新项目时,该行显示相同的值。但是当我检查支架中的设置时,它告诉我设置了正确的项目。

public View getView(int position, View convertView, ViewGroup parent) {
int layoutType = getItemViewType(position);
ListViewRow item = null;

if(convertView == null) {
item = atIndex(position);
holder = new ViewHolder();
convertView = getConvertView(layoutType, parent);//ViewHolder items declared here
convertView.setTag(-1, holder);
}
else if(!viewMatchesType(layoutType, convertView.getId())){
item = atIndex(position);
holder = new ViewHolder();
convertView = getConvertView(layoutType, parent);//ViewHolder items declared here
convertView.setTag(-1, holder);
}
else {
holder = (ViewHolder) convertView.getTag(-1);
item = atIndex(position);
}

setDisplay(item, convertView);//I set values here

if(holder.tv_name.getText() != item.getName()) {
notifyDataSetInvalidated();
}

return convertView;
}

//For performance, ui elements are saved in a holder
private static class ViewHolder {
public ImageView iv_thumbnail;
public TextView tv_name;
}

最佳答案

我自己还没有真正找到这个问题的最佳解决方案,但是删除这个 if 条件似乎对我有用。而不是这个

if(convertView == null) {
item = atIndex(position);
holder = new ViewHolder();
convertView = getConvertView(layoutType, parent);//ViewHolder items declared here
convertView.setTag(-1, holder);
}

就用这个

    item = atIndex(position);
holder = new ViewHolder();
convertView = getConvertView(layoutType, parent);//ViewHolder items declared here
convertView.setTag(-1, holder);

它确实占用了大量内存,但我还没有真正找到任何其他解决方案。

关于java - ListView 显示的项目与容器中的项目不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24107418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com