2014-04-10 57 views
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)); 
    } 


} 

回答

1

試試這個,讓我知道,如果我錯

public void blockCheckedItems(View view) { 
    ArrayList<String> checked = new ArrayList<String>(); 
    ArrayList<String> unchecked = new ArrayList<String>(); 

    SparseBooleanArray sparseBooleanArray = listView.getCheckedItemPositions(); 

    for (int i = 0; i < listView.getCount(); i++) { 
     Cursor cursor = (Cursor) listView.getItemAtPosition(i); 
     String name = cursor.getString(1); 
     if (sparseBooleanArray.get(i)) { 
      checked.add(name); 
     } else { 
      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)); 
    } 
} 
+0

感謝您的反饋!現在,它會打印所有未選中列表的聯繫人,即使其中一些已被選中。還有什麼我可以嘗試。 – user37375

相關問題