我的listview
来自布局,其ID为@android:id/list
。它是android.R.id.list
的一部分。我使用了SimpleCursorAdapter
到setAdapter
到listview
。列表视图包含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));
}
}
答案 0 :(得分:2)
当listview适配器为cursor adapter
时,listview.getItemAtPosition()
会返回指向该行的cursor
。所以你必须从这个光标获取数据:
Cursor cursor = listview.getItemAtPosition();
String name = cursor.getString(0);
我只是假设0是光标所代表的数据库中first name
列的索引,它可能是2,3 ......