我使用public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_list);
listView = (ListView) findViewById(R.id.user_list);
db.open();
fillData();
.......
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor selectedItem = (Cursor) listView.getAdapter().getItem(position);
Log.d("#####", selectedItem.getCount() +"");
// return total number of the cursor using to build the list.
selectedItem.moveToFirst();
.......
}
});
}
private void fillData() {
Cursor c = db.fetchAllSenders();
startManagingCursor(c);
String[] from = new String[] {PeerContract.KEY_NAME};
int[] to = new int[] {R.id.user_list_row_name};
adapter = new SimpleCursorAdapter(this, R.layout.user_list_row, c, from, to, 0);
listView.setAdapter(adapter);
}
构建一个列表。当我点击其中一行时,我想开始另一个活动。代码如下:
Log.d("#####", selectedItem.getCount() +"");
但是,LogCat #####:4
中的int总是返回用于构建列表的游标中的总行数。例如,列表中有4行,在我单击列表中的一行后,LogCat将显示1
。但是当我点击一个项目时它假设为anime_id
。
提前谢谢。
答案 0 :(得分:1)
它来了4因为适配器只有一个游标引用。方法getAdapter()。getItem(position)将返回相同的游标对象,但它会将光标移动到您请求getItem()的位置。
因此,无论何时调用getItem(position),它都不会为您提供新的游标对象,它会为您提供相同的游标对象,将其移动到当前位置