关于Android中listView列表checkBox乱序的问题,求解答!!!
这几天一直都困扰着这个问题,晚上也搜寻了很多资料,就不明白为什么listview+checkBox超过一屏时数据就乱序了,网上说是新显示的View使用了之前某个View的...
这几天一直都困扰着这个问题,晚上也搜寻了很多资料,就不明白为什么listview+checkBox超过一屏时数据就乱序了,网上说是新显示的View使用了之前某个View的对象。由于自己是新手,还是不能够理解,
好想说是当选择了checkbox的时候,记录下当前的状态,然后在getView()中设置,可具体怎么修改,
请各位大哥指点一下迷津,帮忙修改一下,感激不尽
自定义的适配器:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final int index = position;
viewHolder holder = null;
Log.v("", "getview position=" + position);
if (convertView == null) {
holder = new viewHolder();
// 2、加载布局的加载器
convertView = layoutInflater.inflate(layoutId, null);
// 加载布局
holder.im = (ImageView) convertView.findViewById(R.id.imag1);
holder.bookNameTv = (TextView) convertView
.findViewById(R.id.bookName);
holder.authorTv = (TextView) convertView.findViewById(R.id.author);
holder.cb = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}
} 展开
好想说是当选择了checkbox的时候,记录下当前的状态,然后在getView()中设置,可具体怎么修改,
请各位大哥指点一下迷津,帮忙修改一下,感激不尽
自定义的适配器:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final int index = position;
viewHolder holder = null;
Log.v("", "getview position=" + position);
if (convertView == null) {
holder = new viewHolder();
// 2、加载布局的加载器
convertView = layoutInflater.inflate(layoutId, null);
// 加载布局
holder.im = (ImageView) convertView.findViewById(R.id.imag1);
holder.bookNameTv = (TextView) convertView
.findViewById(R.id.bookName);
holder.authorTv = (TextView) convertView.findViewById(R.id.author);
holder.cb = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}
} 展开
2个回答
展开全部
这是item布局重用导致的。你可以在ViewHolder中声明一个int类型的ID,并写一个有参构造。每次new的时候传入 position;
再写一个全局的List集合,只要选中CheckBox就将这个Id加到这个list中,反之则从list中remove掉。这样在getView()方法中只要是position存在list中则把CheckBox的属性设为true反之为false.这样就不会混乱了。这个和图文混排时的错乱是一样的。
再写一个全局的List集合,只要选中CheckBox就将这个Id加到这个list中,反之则从list中remove掉。这样在getView()方法中只要是position存在list中则把CheckBox的属性设为true反之为false.这样就不会混乱了。这个和图文混排时的错乱是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询