单击行项但返回用于构建列表的游标中的所有行

时间:2016-02-13 05:59:29

标签: android

我使用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。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

它来了4因为适配器只有一个游标引用。方法getAdapter()。getItem(position)将返回相同的游标对象,但它会将光标移动到您请求getItem()的位置。

因此,无论何时调用getItem(position),它都不会为您提供新的游标对象,它会为您提供相同的游标对象,将其移动到当前位置