gpt4 book ai didi

Android ListView 项目重新出现

转载 作者:行者123 更新时间:2023-11-29 18:03:19 25 4
gpt4 key购买 nike

我正在开发一个基于 ListView 的应用程序,但我遇到了一个非常奇怪的问题,我的 ListItems 正在重新出现,并且正确的项目没有显示在正确的位置。为了便于理解,我将每个 ListItem 上的文本设置为与其位置相同。我在我的适配器 getView() 调用中这样做。如果我有我的 Nexus 7 4 ListItems 是可见的。如果我总共有 10 个 ListItems,那么它将变成 0、1、3、4、0、1、2、3、4。这适用于所有设备,这意味着最初在屏幕上的项目数 + 1 将是正确的而所有其他 ListItem 都重新排列。

你们认为我的问题出在我代码的哪一部分,因为现在我已经尝试修复这个问题好几个小时了,但我一无所知。非常感谢所有帮助。

编辑:

这是我的 getView():

@Override
public View getView(int position, View convertView, ViewGroup parent) {
CountdownItem ci = mTitle.get(position);

if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, parent, false);

holder = new CountdownViewHolder();
holder.mTitle = (TextView) convertView.findViewById(R.id.textPrim);
holder.mSubtitle = (TextView) convertView
.findViewById(R.id.textSec);
holder.mDayProgress = (ProgressBar) convertView
.findViewById(R.id.day_progress);
holder.mMonthProgress = (ProgressBar) convertView
.findViewById(R.id.month_progress);
holder.mYearText = (TextView) convertView
.findViewById(R.id.year_text);
holder.day_help = (TextView) convertView
.findViewById(R.id.day_help);
holder.month_help = (TextView) convertView
.findViewById(R.id.month_help);

holder.setTitle(Integer.toString(position) + " Title");
holder.setSubtitle(ci.getSubtitle());
holder.fixImageAndText(position);

convertView.setTag(holder);
} else {
holder = (CountdownViewHolder) convertView.getTag();
}

return convertView;
}

最佳答案

您没有正确使用 ViewHolder 模式。以下代码需要移到 if/else 子句之外和 return convertView 之前:

   holder.setTitle(Integer.toString(position) + " Title");
holder.setSubtitle(ci.getSubtitle());
holder.fixImageAndText(position);

关于Android ListView 项目重新出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673697/

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