多个复选框选中,当一个检查一个复选框 [英] multiple checkboxes checked when one check a one check box

查看:201
本文介绍了多个复选框选中,当一个检查一个复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个新的Andr​​oid开发者,当我单击一个复选框多的复选框在多行检查,我使用自定义适配器,请谁能帮助我?

我的联系人列表如下。

 公共类ContactList延伸活动{
    ListView的lvContacts;
      清单<串GT;列表名称;
      清单<串GT; listnumber的;
    SimpleCursorAdapter适配器;
    ArrayList的<&PHONELIST GT; ARR;
    ArrayList的<&PHONELIST GT; arrnumber;
     公共无效的onCreate(捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.main);
            的String [] =投影新的String [] {
                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER,
                    };
            。游标c1 = getContentResolver()查询(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,投影,NULL,NULL,NULL);
            //让活动管理光标            // startManagingCursor(C1);
            LISTNAME =新的ArrayList<串GT;();
            listnumber的=新的ArrayList<串GT;();
            而(c1.moveToNext())
            {
              字符串名称= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
              串号= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
              listname.add(名);
              listnumber.add(数);
            }
            c1.close();
//而(c1.moveToNext())
// {
// //Log.d(\"fghfh,+ c1.getColumnIndex(Phone.NUMBER));
//字符串名称= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//串号= c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// //System.out.println(\"..................\"+number);
               // Log.d(联系人,名); // +:+号);
            //}
             [对象] OBJ = listname.toArray();
             [对象] objnumber = listnumber.toArray();
          // arrnumber =新的ArrayList<&PHONELIST GT;();
             ARR =新的ArrayList<&PHONELIST GT;();
             的String [] =达新的String [obj.length]
             的String [] = danumber新的String [objnumber.length]             的for(int i = 0; I< obj.length;我++)
            {
                 danumber [I] =(字符串)objnumber [I]
                 DA [I] =(字符串)OBJ [I]
                 Toast.makeText(这一点,Humayoon变焦+ OBJ [I],Toast.LENGTH_SHORT).show();
                 arr.add(新PHONELIST(哒[I],danumber [I]));
            }
            ListView控件的ListView =(ListView控件)findViewById(R.id.lvContacts);
            CustomAdapter adpttt =新CustomAdapter(ContactList.this,R.layout.contacts_list_item,ARR);
            listView.setAdapter(adpttt);
}
}

我的自定义适配器code是继

 公共类CustomAdapter扩展ArrayAdapter<&PHONELIST GT; {
        INT inflatr;
        上下文ctxt;
        ArrayList的<&PHONELIST GT;数据=新的ArrayList<&PHONELIST GT;();
        公共CustomAdapter(上下文的背景下,INT资源的ArrayList<&PHONELIST GT; ARR){            超(背景下,资源,ARR);
            this.inflatr =资源;
            this.ctxt =背景;
            this.data = ARR;
        }
        @覆盖
        众长getItemId(INT位置){
            返回的位置;
        }        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
         UserHolder支架=无效;
         查看排= convertView;
        如果(convertView == NULL)
        {
             LayoutInflater吹气=((活动)ctxt).getLayoutInflater();
             行= inflater.inflate(inflatr,父母,假);
             持有人=新UserHolder();
             holder.textName =(TextView中)row.findViewById(R.id.lblName);
             holder.stnumber =(TextView中)row.findViewById(R.id.mobilenum);
             holder.checked =(复选框)row.findViewById(R.id.check);// holder.btnEdit =(的ImageButton)row.findViewById(R.id.atomPay_removePay);
             row.setTag(保持器);
        }
        其他
        {
             支架=(UserHolder)row.getTag();
        }//如果(bulkflag)
// {
// holder.checked.setVisibility(View.VISIBLE);
//}
//其他
// {
// holder.checked.setVisibility(View.GONE);
//}
// holder.checked.setOnClickListener(新OnClickListener(){
//
//公共无效的onClick(视图v){
//
//如果(holder.checked.isChecked())
// {
// selectedIds.add(recIdArr.get(reportslistview.getPositionForView(CBOX)));
// //System.out.println(\"position+ reportslistview.getPositionForView(CBOX));
//}
//其他
// {
// selectedIds.remove(recIdArr.get(reportslistview.getPositionForView(CBOX)));
//}
//}
//});
         PHONELIST DTA = data.get(位置);
         holder.checked.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){
                 INT位置=(整数)v.getTag();                    data.get(位置).setselect(data.get(位置).getSelect()!);
                    notifyDataSetChanged();
            }
        });
         holder.checked.setChecked(dta.getSelect());
         //holder.checked.setTag(position);
        Toast.makeText(ctxtHumayoon zoooommmm+ dta.getNumber(),Toast.LENGTH_SHORT).show();        的for(int i = 1; I< = 256;我++)
        {
            holder.textName.setText(dta.getName());
        }
        对于(INT J = 1; J< = 256; J ++)
        {
            holder.stnumber.setText(dta.getNumber());
        }
// holder.btnEdit.setOnClickListener(新OnClickListener(){
//
// @覆盖
//公共无效的onClick(视图v){
// Toast.makeText(ctxtHumayoon Siddiqueeeeeeeeeeeeeeeeeee+ dta.getName(),Toast.LENGTH_SHORT).show();
//意图moreIntent =新意图(的getContext(),ContactList.class);
//串TNAME = dta.getName();
// moreIntent.putExtra(模板,TNAME);
// v.getContext()startActivity(moreIntent)。
// // ctxt.startActivity(ctxt,ContactList.class);
//}
//});
        返回行;
    }
@覆盖
        公众诠释的getCount(){
    // // TODO自动生成方法存根
            返回data.size();
        }        静态类UserHolder {
            TextView的textName;
            TextView的textAddress;
            TextView的textLocation;
            的ImageButton btnEdit;
            按钮btnDelete;
            TextView的stnumber;
            选中复选框;
            }
    }我的电话清单类以下...    包com.example.sqliteapplication;    公共类PHONELIST {
        字符串名称;
        串号;
        布尔isSelected;
        公共PHONELIST(串串,串号){
            超();
            this.name =串;
            this.number =号;
        }
        公共无效setselect(布尔B)
        {
            this.isSelected = B;
        }
        公共布尔getSelect()
        {
            返回isSelected;
        }
        公共字符串的getName(){
            返回名称;
            }
        公共无效setNumber(串号)
        {
            this.number =号;
        }
        公共字符串getNumber()
        {
            返回数;
        }
        公共无效setname可以(字符串名称){
            this.name =名称;
            }    }


解决方案在 getView

您需要设置复选框价值方法如下:

  holder.checked.setChecked(dta.getSelect());

和您需要为该设置监听器或checkChangeListener,用于更新选择

所以你的getView方法必须是这样:

  @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        UserHolder支架=无效;
         查看排= convertView;
        如果(convertView == NULL)
        {
           //你的code        }
        其他
        {
          //你的code
        }
         holder.checked.setOnClickListener(本);
         holder.checked.setChecked(dta.getSelect());
         holder.checked.setTag(位置); //你需要这样来的onClick中位置的方法
         //其他code

和的onClick方法:

  @覆盖
公共无效的onClick(视图v){    INT位置=(整数)v.getTag();    data.get(位置).setselect(
            !data.get(位置).getSelect());
    notifyDataSetChanged();
}

I am a New Android Developer and when I click on one check-box multiple check-boxes are checked in multiple rows, I am using a custom adapter, please can anyone help me?

My Contact List is following ..

public class ContactList extends Activity {
    ListView lvContacts;
      List<String> listname;  
      List<String> listnumber;
    SimpleCursorAdapter adapter;
    ArrayList<PhoneList> arr;
    ArrayList<PhoneList> arrnumber;
     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            String[] projection = new String[] {
                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER,
                    };
            Cursor c1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,null,null, null);


            // Let activity manage the cursor

            //startManagingCursor(c1);


            listname = new ArrayList<String>();
            listnumber = new ArrayList<String>();
            while (c1.moveToNext())
            {
              String name=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
              String number = c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
              listname.add(name);
              listnumber.add(number);


            }
            c1.close();
//          while(c1.moveToNext())
//          {
//              //Log.d("fghfh", ""+c1.getColumnIndex(Phone.NUMBER));
//              String name=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//              String  number=c1.getString(c1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//              //System.out.println(".................."+number); 




               // Log.d("Contacts : ",name);//+":"+number);
            //}
             Object[] obj=listname.toArray();
             Object[] objnumber=listnumber.toArray();
          //   arrnumber=new ArrayList<PhoneList>();
             arr=new ArrayList<PhoneList>();
             String[] da=new String[obj.length];
             String[] danumber=new String[objnumber.length];

             for(int i=0; i<obj.length; i++)
            {    
                 danumber[i]=(String)objnumber[i];
                 da[i]=(String)obj[i];
                 Toast.makeText(this, "Humayoon    zoom"+obj[i], Toast.LENGTH_SHORT).show();
                 arr.add(new PhoneList(da[i],danumber[i]));


            }
            ListView listView = (ListView) findViewById(R.id.lvContacts);
            CustomAdapter adpttt=new CustomAdapter(ContactList.this,R.layout.contacts_list_item,arr);
            listView.setAdapter(adpttt);
}
}

My Custom Adapter code is following

    public class CustomAdapter extends ArrayAdapter<PhoneList> {
        int inflatr;
        Context ctxt;
        ArrayList<PhoneList> data=new ArrayList<PhoneList>();
        public CustomAdapter(Context context, int resource, ArrayList<PhoneList> arr) {

            super(context, resource, arr);
            this.inflatr = resource;
            this.ctxt = context;
            this.data= arr;
        }
        @Override
        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
         UserHolder holder = null;
         View row = convertView;
        if(convertView==null)
        {
             LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
             row = inflater.inflate(inflatr, parent, false);
             holder = new UserHolder();
             holder.textName=(TextView)row.findViewById(R.id.lblName);
             holder.stnumber=(TextView)row.findViewById(R.id.mobilenum);
             holder.checked=(CheckBox)row.findViewById(R.id.check);

//           holder.btnEdit = (ImageButton) row.findViewById(R.id.atomPay_removePay);
             row.setTag(holder);
        }
        else
        {
             holder = (UserHolder) row.getTag();            
        }

//      if(bulkflag)
//        {
//            holder.checked.setVisibility(View.VISIBLE);
//        }
//        else
//        {
//            holder.checked.setVisibility(View.GONE);
//        }
//       holder.checked.setOnClickListener(new OnClickListener() {
//
//              public void onClick(View v) {
//
//                  if(holder.checked.isChecked())
//                  {
//                      selectedIds.add(recIdArr.get(reportslistview.getPositionForView(cBox)));
//                      //System.out.println("position "+reportslistview.getPositionForView(cBox));
//                  }
//                  else
//                  {
//                      selectedIds.remove(recIdArr.get(reportslistview.getPositionForView(cBox)));
//                  }
//              }
//          });
         PhoneList dta=data.get(position);
         holder.checked.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                 int position = (Integer) v.getTag();

                    data.get(position).setselect(!data.get(position).getSelect());
                    notifyDataSetChanged(); 
            }
        });
         holder.checked.setChecked(dta.getSelect());
         //holder.checked.setTag(position);
        Toast.makeText(ctxt, "Humayoon    zoooommmm"+dta.getNumber(), Toast.LENGTH_SHORT).show();

        for(int i=1; i<=256; i++)
        {
            holder.textName.setText(dta.getName());
        }
        for(int j=1; j<=256; j++)
        {
            holder.stnumber.setText(dta.getNumber());
        }
//      holder.btnEdit.setOnClickListener(new OnClickListener() {
//          
//          @Override
//          public void onClick(View v) {
//              Toast.makeText(ctxt, "Humayoon    Siddiqueeeeeeeeeeeeeeeeeee"+dta.getName(), Toast.LENGTH_SHORT).show();
//              Intent moreIntent=new Intent(getContext(),ContactList.class);
//              String tName=dta.getName();
//              moreIntent.putExtra("Template",tName);
//              v.getContext().startActivity(moreIntent);
//               // ctxt.startActivity(ctxt,ContactList.class);
//          }
//      });
        return row;
    }
@Override
        public int getCount() {
    //      // TODO Auto-generated method stub
            return data.size();
        }

        static class UserHolder {
            TextView textName;
            TextView textAddress;
            TextView textLocation;
            ImageButton btnEdit;
            Button btnDelete;
            TextView stnumber;
            CheckBox checked;
            }


    }

My phone List class is following...

    package com.example.sqliteapplication;

    public class PhoneList {
        String name;
        String number;
        boolean isSelected;
        public PhoneList(String string,String number) {
            super();
            this.name = string;
            this.number=number;
        }
        public void setselect(Boolean b)
        {
            this.isSelected=b;
        }
        public boolean getSelect()
        {
            return  isSelected;
        }
        public String getName() {
            return name;
            }
        public void setNumber(String number)
        {
            this.number=number;
        }
        public String getNumber()
        {
            return number;
        }
        public void setName(String name) {
            this.name = name;
            }



    }

解决方案

you need set checkBox value in getView method like:

 holder.checked.setChecked(dta.getSelect());

and you need set listener or checkChangeListener for that, for updating Select value

so your getView method must be like:

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        UserHolder holder = null;
         View row = convertView;
        if(convertView==null)
        {
           // yourCode

        }
        else
        {
          // your code
        }
         holder.checked.setOnClickListener(this);
         holder.checked.setChecked(dta.getSelect());
         holder.checked.setTag(position);   // you need this for getting position in onClick method
         // other code

and onClick method:

@Override
public void onClick(View v) {



    int position = (Integer) v.getTag();

    data.get(position).setselect(
            !data.get(position).getSelect());
    notifyDataSetChanged();
}

这篇关于多个复选框选中,当一个检查一个复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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