我有一台设置为CHOICE_MODE_MULTIPLE的ListView。我也有额外的标题来管理(取消)选择所有的项目。问题是:这样做是正确的吗?它是有效的,但是我不确定这是不是正确的方式。正如您在下面看到的,有一个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);
}
}
}
};发布于 2011-02-02 23:18:04
你可以像这样优化你的代码:
替换
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);发布于 2011-02-02 23:18:36
这应该做同样的事情,并且更简洁一些。循环从1开始,因为您不想重置header的选中状态,并且header的索引为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);
}
}
};发布于 2014-05-31 13:32:09
其中Length是数组中的数组长度,chkbox是全选复选框。
新建(chkbox.setOnCheckedChangeListener 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);
}
}
}
});https://stackoverflow.com/questions/4876083
复制相似问题