最近学习android,在书上看到一个实例,当listView上没有东西被选中的时候,getCheckedItemPositions() .size()得到的值确不是0,以下是代码 Platform 2.2
private void showMulti(){
AlertDialog ad = new AlertDialog.Builder(this).setTitle("选择省份").
setMultiChoiceItems(provinces, defualShow, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
}
}).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String s = "你选择了:";
for(int i =0; i<provinces.length;i++){
if(lv.getCheckedItemPositions().get(i)){
s += i+":"+lv.getAdapter().getItem(i)+",";
Log.d("info", i+" is checked");
}
}
if(lv.getCheckedItemPositions().size()>0){
Log.d("info", lv.getCheckedItemPositions().size());
new AlertDialog.Builder(Main.this).setMessage(s).show();
}else{
new AlertDialog.Builder(Main.this).setMessage("什么也没选").show();
}
}
}).setNegativeButton("取消", null)
.create();
lv = ad.getListView();
ad.show();
}

点击Show Mutil后,如果先选择几个,再将其全部取消

得到的结果确是

而不是预期结果

由此推测出lv.getCheckedItemPositions().size()>0,但在lv.getCheckedItemPositions().get(i)进行判断的时候确实没得到被
选中的item, 这里纳闷了,看其doc说明
public SparseBooleanArray getCheckedItemPositions ()
Since:
API Level 1
Returns the set of checked items in the list.
应该是得到选中的列表,事实上得到的size确不是0,而是2,虽然可以通过其它方法来解决这个bug,但这里道底是程序的逻辑问题,还是我对API的理解错误,有点纠结
Android ListView Bug 分析
本文分析了一个关于Android中ListView的奇怪现象:即使未选中任何项,getCheckedItemPositions().size()返回的值也不为0。通过代码示例探讨了可能的原因及解决方案。
5751

被折叠的 条评论
为什么被折叠?



