Android ListView带有复选框,Check all复选框则相反

Android ListView带有复选框,Check all复选框则相反,android,listview,checkbox,Android,Listview,Checkbox,我正在尝试实现一个带有复选框和全选按钮的列表视图。但是,当我选中全部复选框时,情况正好相反,所有复选框都被取消选中,当我取消选中全部复选框时,复选框被选中。这是我的密码: chkall = (CheckBox) findViewById(R.id.chkAll); //chkall.setChecked(false); /** Defining array adapter to store items for the listview **/ Ar

我正在尝试实现一个带有复选框和全选按钮的列表视图。但是,当我选中全部复选框时,情况正好相反,所有复选框都被取消选中,当我取消选中全部复选框时,复选框被选中。这是我的密码:

chkall = (CheckBox) findViewById(R.id.chkAll);
        //chkall.setChecked(false);
        /** Defining array adapter to store items for the listview **/
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, names);

        /** Setting the arrayadapter for this listview  **/
        getListView().setAdapter(adapter);                

        /** Defining checkbox click event listener **/
        OnClickListener clickListener = new OnClickListener() {         
            @Override
            public void onClick(View v) {
                CheckBox chk = (CheckBox) v;
                int itemCount = getListView().getCount();
                for(int i=0 ; i < itemCount ; i++){
                    getListView().setItemChecked(i, chk.isChecked());

                }



            }
        };      

        /** Defining click event listener for the listitem checkbox */
        OnItemClickListener itemClickListener = new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                int checkedItemCount = getCheckedItemCount();                               

                if(getListView().getCount()==checkedItemCount)
                    chkall.setChecked(false);
                else
                    chkall.setChecked(true);


            //      String attID =scoresDataBaseAdapter.getAttID(perd,mRowId);
                    //scoresDataBaseAdapter.insertAttScore(perd,mRowId,attID,Sname,idstud,score);
                //  Toast.makeText(getApplicationContext(), " "+arg0+" "+arg1+" "+arg2+" "+arg3, Toast.LENGTH_SHORT).show();



            }
        };      

        /** Getting reference to checkbox available in the main.xml layout */ 
        CheckBox chkAll =  ( CheckBox ) findViewById(R.id.chkAll);  

        /** Setting a click listener for the checkbox **/
        chkAll.setOnClickListener(clickListener);     

        /** Setting a click listener for the listitem checkbox **/
        getListView().setOnItemClickListener(itemClickListener);

    }

    /**
     * 
     * Returns the number of checked items
     */
    private int getCheckedItemCount(){
        int cnt = 0;
        SparseBooleanArray positions = getListView().getCheckedItemPositions();
        int itemCount = getListView().getCount();

        for(int i=0;i<itemCount;i++){
            if(positions.get(i))
                cnt++;
        }

        return cnt;
    }
chkall=(复选框)findviewbyd(R.id.chkall);
//chkall.setChecked(假);
/**定义数组适配器以存储listview的项**/
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u多选,名称);
/**设置此listview的arrayadapter**/
getListView().setAdapter(适配器);
/**定义复选框单击事件侦听器**/
OnClickListener clickListener=新建OnClickListener(){
@凌驾
公共void onClick(视图v){
复选框chk=(复选框)v;
int itemCount=getListView().getCount();
对于(int i=0;i对于(int i=0;i您可以通过执行以下操作来反转对
setItemChecked
函数的调用:

getListView().setItemChecked(i, !chk.isChecked());

您可以通过执行以下操作来反转对
setItemChecked
函数的调用:

getListView().setItemChecked(i, !chk.isChecked());

您可以通过执行以下操作来反转对
setItemChecked
函数的调用:

getListView().setItemChecked(i, !chk.isChecked());

您可以通过执行以下操作来反转对
setItemChecked
函数的调用:

getListView().setItemChecked(i, !chk.isChecked());

实际上,我尝试更改下面的代码,但没有任何结果。如果(getListView().getCount()==checkedItemCount)chkall.setChecked(true);否则chkall.setChecked(false);我尝试更改下面的代码,但没有任何结果。如果(getListView().getCount()==checkedItemCount)chkall.setChecked(true);否则chkall.setChecked(false);我实际上尝试更改下面的代码,但没有任何结果。if(getListView().getCount()==checkedItemCount)chkall.setChecked(true);else chkall.setChecked(false);我实际上尝试更改下面的代码,但没有任何结果。if(getListView().getCount()==checkedItemCount)chkall.setChecked(true);else chkall.setChecked(false);