ListView 中Checkbox 错乱问题

简介: 最近项目需求,模仿今日头条的短视频播放,点击其中一个视频,将其他的视频停止播放。撸完代码后执行,发现会发现图片错位的情况,然后去谷歌,寻求解决,大多数都是setTag()方式,可以试过后还是存在问题。

最近项目需求,模仿今日头条的短视频播放,点击其中一个视频,将其他的视频停止播放。撸完代码后执行,发现会发现图片错位的情况,然后去谷歌,寻求解决,大多数都是setTag()方式,可以试过后还是存在问题。思考后发现这里的问题其实就是ListView中Checkbox错乱问题。

原理:复用view,当选中Checkbox的时候,记下其状态,用map保存起来。
定义集合保存。
控件:假设控件为my_view,点击my_view后改变背景操作,代码如下:

class MyActivity extends Activity {
    ...
    // 1.定义集合保存状态
    private Map<Integer, Boolean> isChecked;

    // 2.初始化状态,默认没有选中状态为false
    private void initData(){  
        isChecked=new HashMap<>();  
        for(int i=0;i<list.size();i++){
            isChecked.put(i, false);  
        }  
    } 
    
    private class MyAdapter extends BaseAdapter {
        public MyAdapter() {
            // 2.调用初始化方法
            initData();
        }
        ...
        @Override
        public View getView(final int position, View convertView, ViewGroup parent){
            ...
            // 3.点击事件后记录
            viewHolder.my_view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // 4.变量记录
                    isChecked.put(position, true);
                }
            });
            // 5.初始化my_view的状态一定要放在监听器后面,否则还是会出现数据错乱情况。(重要)
            holder.my_view.setBackground();
        }
        
    }
}
目录
相关文章
|
7月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
721 1
|
7月前
|
Android开发
Android控件——Checkbox复选框、RadioButton单选、ToggleButton开关、SeekBar拖动条
Android控件——Checkbox复选框、RadioButton单选、ToggleButton开关、SeekBar拖动条
|
API Android开发
ListView或GridView上添加能一起滚动的Button效果的解决思路
ListView或GridView上添加能一起滚动的Button效果的解决思路
ListView+CheckBox错乱问题
public class MyAdapter extends BaseAdapter { private Context mContext; private ArrayList&lt;Map&lt;String, Object&gt;&gt; data; public static HashMap&lt;Integer, Boolean&gt; mapisSelector;
1360 0
|
Android开发
Gridview的item含有checkbox,setOnItemClickListener方法失效的问题
在开发中我们常常遇到一些莫名奇妙的问题,就比如Gridview的item含有checkbox,setOnItemClickListener方法失效的问题。 刚开始网上搜了一下,如http://my.oschina.net/fuckboogie/blog/346202 按这个没办法解决我上面的问题,于是我在item的子布局里面新增了 &lt;span style="font-size
898 0
|
Android开发
Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
<div class="markdown_views"> <h1 id="android高级控件一listview绑定checkbox实现全选增加和删除等功能">Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能</h1> <hr> <blockquote> <p>这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一
2111 0