listview getItemAtPosition()方法的输出提供了不可读的输出

时间:2014-04-10 06:45:05

标签: android listview android-listview

我的listview来自布局,其ID为@android:id/list。它是android.R.id.list的一部分。我使用了SimpleCursorAdaptersetAdapterlistview。列表视图包含checkboxes,其中包含联系人姓名,例如Emily Andrews,Susan John ......我想知道用户选择的联系人姓名。当我使用下面的代码时,它打印一个对象android.content.ContentResolver.cursorWrapper ...我不知道如何解释它并知道选择了哪个联系人名称。有没有办法让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));
     }


 }

1 个答案:

答案 0 :(得分:2)

当listview适配器为cursor adapter时,listview.getItemAtPosition()会返回指向该行的cursor。所以你必须从这个光标获取数据:

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

我只是假设0是光标所代表的数据库中first name列的索引,它可能是2,3 ......