关于android.widget.ListView.getCheckedItemPositions() .size()

最近学习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();
	}
 

 

 


关于android.widget.ListView.getCheckedItemPositions() .size()
 点击Show Mutil后,如果先选择几个,再将其全部取消

 

关于android.widget.ListView.getCheckedItemPositions() .size()      关于android.widget.ListView.getCheckedItemPositions() .size()
 
 得到的结果确是


关于android.widget.ListView.getCheckedItemPositions() .size()
 而不是预期结果


关于android.widget.ListView.getCheckedItemPositions() .size()
 由此推测出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的理解错误,有点纠结