android-listview - 在ListView中,检查所有复选框的正确方法?

  显示原文与译文双语对照的内容
0 0

我有一个设置为CHOICE_MODE_MULTIPLE的ListView 。 我还有其他的头来管理( un ) 选择所有项目。 问题是:这是正确的方法? 虽然这很有效,但我不确定这是否合适。 就像你看到的,下面是一个checkAllCheckBoxes对象,我将它传递给头 onClickListener() 方法。 你觉得如果你觉得。


private OnClickListener checkAllCheckboxes = new OnClickListener(){
 public void onClick(View v) {
 ListView lv = getListView();
 int size = getListAdapter().getCount();
 if(lv.isItemChecked(0)){
 for(int i = 0; i<=size; i++){
 lv.setItemChecked(i, false);
 }
 } else {
 for(int i = 0; i<=size; i++){
 lv.setItemChecked(i, true);
 }
 }
 }

};

时间: 原作者:

0 0

你可以像这样优化代码:

替换


if(lv.isItemChecked(0)){
 for(int i = 0; i<=size; i++){
 lv.setItemChecked(i, false);
 }
} else {
 for(int i = 0; i<=size; i++){
 lv.setItemChecked(i, true);
 }
}


 boolean check = lv.isItemChecked(0);
 for(int i = 0; i <= size; i++)
 lv.setItemChecked(i,!check);

原作者:
0 0

这应该是同样的事情,而且更简洁一些。 循环从 1开始,因为你不希望重置标头的选中状态,而标题为 0.


private OnClickListener checkAllCheckboxes = new OnClickListener(){
 public void onClick(View v) {
 ListView lv = getListView();
 int size = lv.getAdapter().getCount();
 boolean checked = lv.isItemChecked(0);
 for(int i=1; i<size; i++) {
 lv.setItemChecked(i, checked);
 }
 }

};

原作者:
0 0

在 array 中长度为 array 长度的长度,而chkbox则选择所有复选框。

chkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {


 @Override
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//TODO Auto-generated method stub
 if(chkbox.isChecked())
 {

 for(i=0;i<length;i++)
 {

 lv.setItemChecked(i, true);
 }

 }
 else
 {
 for(i=0;i<length;i++)
 {

 lv.setItemChecked(i, false);
 }


 }

 }
 });

...