美文网首页程序员@IT·互联网
ListView 中Checkbox 错乱问题

ListView 中Checkbox 错乱问题

作者: 路Promenade | 来源:发表于2016-12-18 17:45 被阅读155次

    最近项目需求,模仿今日头条的短视频播放,点击其中一个视频,将其他的视频停止播放。撸完代码后执行,发现会发现图片错位的情况,然后去谷歌,寻求解决,大多数都是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();
            }
            
        }
    }
    

    相关文章

      网友评论

        本文标题:ListView 中Checkbox 错乱问题

        本文链接:https://www.haomeiwen.com/subject/fdyvpttx.html