【问题标题】:select all checkboxes using button in android使用android中的按钮选择所有复选框
【发布时间】:2015-09-29 05:22:41
【问题描述】:

我正在创建带有联系人列表复选框的列表视图,我有一个按钮来选择联系人列表视图的所有复选框。当我设置 for (int i = 0; i

public class Contacts extends Activity implements CompoundButton.OnCheckedChangeListener{


    String name, phoneNo;
    List<ContactItem> contectItem;

    ArrayList<String> valuesList = new ArrayList<String>();

    ListView lv;
    CompoundButton b1;
    String[] sender = null;
    boolean flag = true;

    int i = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_contacts);

        lv = (ListView) findViewById(R.id.contactList);
        lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);


        method();


    }

    public void method() {

        // ProgressDialog pd = new ProgressDialog(Contacts.this);

        // pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);

        //pd.setTitle("Please wait");
        //  pd.setMessage("Loading Contacts...");

        //  pd.show();


        contectItem = new ArrayList<ContactItem>();


        ContentResolver cr = getContentResolver();

        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
                null, ContactsContract.Contacts.HAS_PHONE_NUMBER + "= 1", null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ")ASC");

        if (cur.getCount() > 0) {

            while (cur.moveToNext()) {


                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

                name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

                    Cursor pCur = cr.query
                            (ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                    null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? ",
                                    new String[]{id}, null);

                    while (pCur.moveToNext()) {

                        int i = 0;

                        phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                        //Toast.makeText(Contacts.this, "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_LONG).show();

                        ContactItem item = new ContactItem(phoneNo, name);

                        contectItem.add(item);

                    }

                    pCur.close();


                    contactAdpter adpter = new contactAdpter(this, R.layout.contact_list, contectItem);

                    lv.setAdapter(adpter);


                }


            }
        }


        // pd.dismiss();

    }





    public void back (View v) {


        super.onBackPressed();

        finish();

    }


    public void select_all (View v) {


          if (lv.getCount() > 0) {





            for (int i = 0; i <lv.getCount(); i++ ) {


                View view = lv.getChildAt(i);

                CheckBox chk = (CheckBox)view.findViewById(R.id.checkbox1);



                chk.setChecked(true);

            }


        }






    }





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



        int pos = lv.getPositionForView(buttonView);


        if (pos != ListView.INVALID_POSITION) {


            ContactItem p = contectItem.get(pos);

            p.setSelected(isChecked);

            if (isChecked) {


                if (p.isSelected()) {


                    valuesList.add(p.getNumber());


                }

            } else {


                valuesList.remove(p.getNumber());


            }


        }
    }

【问题讨论】:

    标签: android listview button checkbox


    【解决方案1】:

    尝试在 select_all 方法中使用“lv.getAdapter().getCount()”代替“lv.getCount()”来获取列表视图项的计数。

    【讨论】:

      【解决方案2】:

      试试这个方法

      获取listview的孩子

      for (int i = 0; i < listView.getAdapter().getCount(); i++) {
              View view = listView.getChildAt(i);
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 2016-01-21
        • 1970-01-01
        • 2016-12-21
        • 2015-12-09
        • 2013-02-22
        相关资源
        最近更新 更多