我有多个复选框,但我想保存在活动只有一个复选框值 [英] I have a multiple checkbox but i want save only single checkbox value in activity

查看:83
本文介绍了我有多个复选框,但我想保存在活动只有一个复选框值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的code:

 公共类ImageAdapter扩展了BaseAdapter
   {
      私人LayoutInflater mInflater;
      私人语境mContext;
      公共ImageAdapter(上下文的背景下)
      {
           mContext =背景;
      }
      公众诠释getCount将()
      {
           返回计数;
      }
      公共对象的getItem(INT位置)
      {
           返回的位置;
      }
      众长getItemId(INT位置)
      {
           返回的位置;
      }
      公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup)
      {
           最后ViewHolder持有人;
           如果(convertView == NULL)
           {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.state_info,NULL);

                持有人=新ViewHolder();
                holder.textview =(TextView中)convertView.findViewById(R.id.thumbImage);
                holder.checkbox =(复选框)convertView.findViewById(R.id.itemCheckBox);

                convertView.setTag(保持器);

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

           convertView.setTag(保持器);

           //holder.checkbox.setId(position);
           holder.textview.setId(位置);

           holder.checkbox.setId(位置);
           holder.checkbox.setOnClickListener(新OnClickListener(){
               @覆盖
               公共无效的onClick(视图v)
               {
                   的for(int i = 0; I<计数;我++)
                   {
                       如果(v.getId()==ⅰ)
                       {
                           thumbnailsselection [我] =真;
                           Log.v(检查,+位置);

                       }
                       其他
                       {
                           thumbnailsselection [我] = FALSE;
                       }
                   }
                   notifyDataSetChanged();
               }
           });

           如果(thumbnailsselection [位置])
           {
               holder.checkbox.setChecked(真正的);
           }
           其他
           {
               holder.checkbox.setChecked(假);
           }

           holder.textview.setText(items.get(位置).getName());

           holder.checkbox.setChecked(thumbnailsselection [位置]);
           holder.id =位置;
           返回convertView;

      }

 }
 

解决方案

您要落实检查chnge监听器在你的类时,该复选框是选中添加值字符串或任何地方,你的愿望就取消勾选直接删除这一点,当你回到你的观点你要检查第一个值,如果匹配,则检查位置时可能会帮助你的复选框

OnCheckedChangeListener Check_Boxes_Listener =新OnCheckedChangeListener(){

  @覆盖
    公共无效onCheckedChanged(CompoundButton buttonView,
            布尔器isChecked){

        复选框CB =(复选框)buttonView;

        如果(cb.isChecked()==真){

            如果(Maximum_Selected_Check_Boxes< 16){
                Maximum_Selected_Check_Boxes ++;
                HashMap的<字符串,字符串>指数=新的HashMap<字符串,字符串>();
                Index.put(指数,cb.getTag()的toString());
                selectCBs.add(索引);

            }

            其他

            如果(Maximum_Selected_Check_Boxes> = 16){

                Toast.makeText(Check_Boxes,
                        您选择的最大项目,
                        Toast.LENGTH_SHORT).show();
                cb.setChecked(假);

            }

        }否则,如果(cb.isChecked()== FALSE){
            Maximum_Selected_Check_Boxes--;

            字符串取消选中= cb.getTag()的toString()。

            INT J = 0;
            的for(int i = 0; I< selectCBs.size();我++){
                如果(Uncheck.equalsIgnoreCase(selectCBs.get(I)获得(指数)
                        的ToString())){
                    J =;
                    selectCBs.remove(J);
                    尝试 {
                        Array_of_Update_Query.remove(J);
                    }赶上(IndexOutOfBoundsException异常E){

                    }

                }

            }

        }

    }

};

check.setOnCheckedChangeListener(Check_Boxes_Listener);
 

这里是用于在我的跑步项目可能是它的帮助下对所述方法的样品你

Here is my code:

public class ImageAdapter extends BaseAdapter 
   {
      private LayoutInflater mInflater;
      private Context mContext;
      public ImageAdapter(Context context) 
      {
           mContext = context;
      }
      public int getCount() 
      {
           return count;
      }
      public Object getItem(int position) 
      {
           return position;
      }
      public long getItemId(int position) 
      {
           return position;
      }
      public View getView(final int position, View convertView, ViewGroup parent) 
      {
           final ViewHolder holder;
           if (convertView == null) 
           {    
                convertView = LayoutInflater.from(mContext).inflate(R.layout.state_info, null); 

                holder = new ViewHolder();                                      
                holder.textview = (TextView) convertView.findViewById(R.id.thumbImage);                                              
                holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox); 

                convertView.setTag(holder);

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

           convertView.setTag(holder);

           //holder.checkbox.setId(position);
           holder.textview.setId(position);

           holder.checkbox.setId(position);
           holder.checkbox.setOnClickListener(new OnClickListener() {
               @Override
               public void onClick(View v) 
               {           
                   for (int i = 0; i < count; i++) 
                   {       
                       if (v.getId() == i) 
                       {   
                           thumbnailsselection[i] = true;
                           Log.v("check", ""+position);

                       }   
                       else 
                       {   
                           thumbnailsselection[i] = false;
                       }   
                   }
                   notifyDataSetChanged();
               }
           });

           if (thumbnailsselection[position]) 
           {
               holder.checkbox.setChecked(true);
           } 
           else 
           {
               holder.checkbox.setChecked(false);
           }

           holder.textview.setText(items.get(position).getName());

           holder.checkbox.setChecked(thumbnailsselection[position]);
           holder.id = position;
           return convertView;

      }          

 }

解决方案

You want to implement on check chnge listener in your class when the check box is check Add the value in string or any where you desire on uncheck simply remove that And when you come back to your view You want to check first the value if match then check the check box of that location This may helps you

OnCheckedChangeListener Check_Boxes_Listener = new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {

        CheckBox cb = (CheckBox) buttonView;

        if (cb.isChecked() == true) {

            if (Maximum_Selected_Check_Boxes < 16) {
                Maximum_Selected_Check_Boxes++;
                HashMap<String, String> Index = new HashMap<String, String>();
                Index.put("Index", cb.getTag().toString());
                selectCBs.add(Index);

            }

            else

            if (Maximum_Selected_Check_Boxes >= 16) {

                Toast.makeText(Check_Boxes,
                        "You have selected the Maximum Items",
                        Toast.LENGTH_SHORT).show();
                cb.setChecked(false);

            }

        } else if (cb.isChecked() == false) {
            Maximum_Selected_Check_Boxes--;

            String Uncheck = cb.getTag().toString();

            int j = 0;
            for (int i = 0; i < selectCBs.size(); i++) {
                if (Uncheck.equalsIgnoreCase(selectCBs.get(i).get("Index")
                        .toString())) {
                    j = i;
                    selectCBs.remove(j);
                    try {
                        Array_of_Update_Query.remove(j);
                    } catch (IndexOutOfBoundsException e) {

                    }

                }

            }

        }

    }

};

check.setOnCheckedChangeListener(Check_Boxes_Listener);

here is a sample on the method that is used in my running project may be its help you

这篇关于我有多个复选框,但我想保存在活动只有一个复选框值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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