复选框不正常使用的ListView [英] Checkbox not working properly with ListView

查看:65
本文介绍了复选框不正常使用的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实现与ListView控件的listview.The问题我得到的每一个ITEN的复选框,当我点击任何一个复选框,然后这是不是也点击了一些其他复选框得到随机点击

 公开查看getView(INT位置,查看convertView,ViewGroup中父){
            // TODO自动生成方法存根

            查看VI = convertView;
            最终诠释为=位置;
            如果(convertView == NULL){//如果它不回收,初始化一些
                //属性
                LayoutInflater充气=(LayoutInflater)活动
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                VI = inflater.inflate(R.layout.grid_item,NULL);
                持有人=新ViewHolder();

                holder.textheader =(TextView中)vi.findViewById(R.id.item1);
                holder.textcpu =(TextView中)vi.findViewById(R.id.item2);
                holder.text_modified_date =(TextView中)vi.findViewById(R.id.item4);
                holder.text_cpu =(TextView中)vi.findViewById(R.id.item3);
                holder.text_checkbox =(复选框)vi.findViewById(R.id.checkBox1);
                vi.setTag(保持器);

                holder.text_checkbox.setOnClickListener(新OnClickListener(){
                    @覆盖
                    公共无效的onClick(视图v){
                        如果(holder.text_checkbox.isClickable()){
                            itemChecked.set(如,真正的);
                            包=的;
                        }否则如果(!holder.text_checkbox.isClickable()){
                            itemChecked.set(为假);
                        }
                        字符串packag = app_package.get(AS);
                        Log.d(包listttttttttt,packag);
                    }
                });


            } 其他 {
                支架=(ViewHolder)vi.getTag();


            }
 

解决方案

尝试下面code

 公开查看getView(INT位置,查看convertView,ViewGroup中父){
        // TODO自动生成方法存根

        查看VI = convertView;
        最终诠释为=位置;
        如果(convertView == NULL){//如果它不回收,初始化一些
            //属性
            LayoutInflater充气=(LayoutInflater)活动
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            VI = inflater.inflate(R.layout.grid_item,NULL);
            持有人=新ViewHolder();

            holder.textheader =(TextView中)vi.findViewById(R.id.item1);
            holder.textcpu =(TextView中)vi.findViewById(R.id.item2);
            holder.text_modified_date =(TextView中)vi.findViewById(R.id.item4);
            holder.text_cpu =(TextView中)vi.findViewById(R.id.item3);
            holder.text_checkbox =(复选框)vi.findViewById(R.id.checkBox1);
            vi.setTag(保持器);

        } 其他 {
            支架=(ViewHolder)vi.getTag();
        }


             holder.text_checkbox.setOnCheckedChangeListener(新OnCheckedChangeListener()
             {
              公共无效onCheckedChanged(CompoundButton buttonView,布尔器isChecked)
                {
                如果(器isChecked)
                {
                      //做你的东西
                      itemChecked.set(如,真正的);
                        包=的;
                }
                其他
                {
                      //做你的东西
                      itemChecked.set(为假);
                }

        }
    });

如果(itemChecked.size()= 0&放大器;!&安培; itemChecked.get(位置))
        holder.text_checkbox.setChecked(真正的);
    其他
        holder.text_checkbox.setChecked(假);
 

I am implementing the checkbox with listview for every Iten of listview.The Problem i am getting is when I am clicking on any single check box then some other checkboxes which are not clicked also getting clicked randomly.

public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            View vi = convertView;
            final int as=position;
            if (convertView == null) { // if it's not recycled, initialize some
                // attributes
                LayoutInflater  inflater = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                vi = inflater.inflate(R.layout.grid_item, null);
                holder = new ViewHolder();

                holder.textheader = (TextView) vi.findViewById(R.id.item1);
                holder.textcpu = (TextView) vi.findViewById(R.id.item2);
                holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
                holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
                holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
                vi.setTag(holder);

                holder.text_checkbox.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (holder.text_checkbox.isClickable()) {
                            itemChecked.set(as, true);
                            packages=as;
                        } else if (!holder.text_checkbox.isClickable()) {
                            itemChecked.set(as, false);
                        }
                        String packag=app_package.get(as);
                        Log.d("package listttttttttt", packag);
                    }
                });


            } else {
                holder = (ViewHolder) vi.getTag();


            }

解决方案

Try below code

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View vi = convertView;
        final int as=position;
        if (convertView == null) { // if it's not recycled, initialize some
            // attributes
            LayoutInflater  inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            vi = inflater.inflate(R.layout.grid_item, null);
            holder = new ViewHolder();

            holder.textheader = (TextView) vi.findViewById(R.id.item1);
            holder.textcpu = (TextView) vi.findViewById(R.id.item2);
            holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
            holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
            holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
            vi.setTag(holder);

        } else {
            holder = (ViewHolder) vi.getTag();
        }          


             holder.text_checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
             {          
              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)      
                {                                  
                if(isChecked)
                {
                      // do your stuff
                      itemChecked.set(as, true);
                        packages=as;
                }
                else
                {
                      // do your stuff
                      itemChecked.set(as, false);
                }       

        }
    });

if(itemChecked.size() != 0 && itemChecked.get(position))
        holder.text_checkbox.setChecked(true);
    else
        holder.text_checkbox.setChecked(false);

这篇关于复选框不正常使用的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆