0
我的列表視圖來自ID爲@android:id/list的佈局。它是android.R.id.list的一部分。我使用SimpleCursorAdapter將setAdapter設置爲listview。該列表視圖包含帶有聯繫人姓名的複選框,例如Emily Andrews,Susan John ...我想知道用戶選擇的聯繫人的姓名。當使用下面的代碼時,出於某種原因,它給了我未經檢查的列表中的隨機聯繫人姓名。例如,雖然我有艾米麗檢查,馬特瓊斯沒有選中。它們都在未經檢查的列表中。此外,無論我在列表視圖中選中並取消選中,它總是會給我未選中列表中的前兩個聯繫人,並且不會爲我的檢查列表打印任何內容。有什麼辦法可以解決這個問題嗎?SparseBooleanArray在列表視圖中爲未選中的項目賦予true
public void blockCheckedItems(View view) {
// int cntChoice = lv.getCount();
checked = new ArrayList<String>();
unchecked = new ArrayList<String>();
int itempositions=adapter.getCount();
SparseBooleanArray sparseBooleanArray = lv.getCheckedItemPositions();
int countChoice = lv.getChildCount();
Log.d("" + countChoice, "CountChoice===============================");
Log.d("" + sparseBooleanArray,"sparseBooleanArray -------------------------");
for(int i = 0; i < countChoice; i++)
{
if(sparseBooleanArray.valueAt(i) == true)
{
Cursor cursor = (Cursor) lv.getItemAtPosition(i);
String name = cursor.getString(1);
checked.add(name);
}
else if(sparseBooleanArray.valueAt(i) == false)
{
Cursor cursor = (Cursor) lv.getItemAtPosition(i);
String name = cursor.getString(1);
unchecked.add(name);
}
}
for(int i = 0; i < checked.size(); i++){
Log.d("checked list&&&&&&&&&&&&&&&&&&&", "" + checked.get(i));
}
for(int i = 0; i < unchecked.size(); i++){
Log.d("in unchecked list&&&&&&&&&&&&&&&&&&&", "" + unchecked.get(i));
}
}
感謝您的反饋!現在,它會打印所有未選中列表的聯繫人,即使其中一些已被選中。還有什麼我可以嘗試。 – user37375