2014-04-10 86 views
1

我的listview來自其編號爲@android:id/list的佈局。它是android.R.id.list的一部分。我用SimpleCursorAdaptersetAdapterlistview。該列表視圖包含checkboxes與聯繫人名稱,如Emily Andrews,Susan John ...我想知道用戶選擇的聯繫人的名稱。當我使用下面的代碼時,它會打印一個對象android.content.ContentResolver.cursorWrapper ...我不知道如何解釋這一點,並知道選擇了哪個聯繫人名稱。有沒有辦法讓listview.getItemAtPosition()的輸出可讀?listview getItemAtPosition()方法的輸出給出不可讀的輸出

代碼:

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.get(i) == true) 
      { 
       checked.add(lv.getItemAtPosition(i). 
         .toString()); 

      } 
      else if(sparseBooleanArray.get(i) == false) 
      { 
       unchecked.add(lv.getItemAtPosition(i).toString()); 
      } 

     } 
    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)); 
    } 


} 

回答

2

當ListView的適配器是cursor adapter然後listview.getItemAtPosition()返回cursor指出該行。所以你必須從光標這樣得到的數據:

Cursor cursor = listview.getItemApPostion(); 
String name = cursor.getString(0); 

我只是假設0是在光標表示數據庫first name列的索引,我可能是2,3 ...

+0

非常感謝您的幫助!感謝帖子,我能夠得到它的工作! :D – user37375

+0

此外,出於某種原因,它給了我未經檢查的列表中的隨機聯繫人姓名。例如,雖然我有艾米麗檢查,馬特瓊斯沒有選中。它們都在未經檢查的列表中。有什麼辦法可以解決這個問題嗎? – user37375