我正在开发一个基于 ListView 的应用程序,但我遇到了一个非常奇怪的问题,我的 ListItems 正在重新出现,并且正确的项目没有显示在正确的位置。为了便于理解,我将每个 ListItem 上的文本设置为与其位置相同。我在我的适配器 getView() 调用中这样做。如果我有我的 Nexus 7 4 ListItems 是可见的。如果我总共有 10 个 ListItem,那么它将像 0、1、3、4、0、1、2、3、4 一样。这适用于所有设备,这意味着屏幕上最初的项目数 + 1 将是正确的而所有其他 ListItems 都重新排列。
你们认为我的问题出在我的代码的哪一部分,因为现在我已经尝试解决这个问题几个小时了,我一无所知。非常感谢所有帮助。
编辑:
这是我的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;
}