android - 无法从游标适配器获取数据

标签 android sqlite android-listview cursor android-cursoradapter

我有一个 ListView(在 Activity 中,而不是在 ListActivity 中),它利用自定义游标适配器从我的数据中获取一些数据本地数据库并将它们显示在 ListView 中。

lv.setOnItemClickListener(new OnItemClickListener()
{
   @Override
   public void onItemClick(AdapterView<?> arg0, View view, int position, long id)
      {
            Log.i(tag, "position = " + position);
        Log.i(tag, "id is : " + id));
      }
});

假设我的数据库列如下:

id, name, surname, dob, height, gender, placeOfBirth, maritalStatus.

但是,我在我的 ListView (row.xml) 中只显示姓名。 但是,每当用户点击列表中的某一行时,我也想检索其余数据,例如,点击的行的 ID 或性别。

问题是,我没有在列表中显示数据库行中的所有信息,但是,当用户按下列表时,我需要检索该列表的一些数据。我怎样才能在这里做到这一点?

下面的方法不起作用,因为我不在 ListActivity 中,而只是在 Activity 中。

public void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position,  id);

Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
c.moveToPosition(position);
//get the data...
}

最佳答案

OnItemClickListener 中的arg0 参数 ListView。但是,您可以这样做

lv.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
            // This will get the cursor from the adapter, already moved to position
            Cursor cursor = (Cursor) mCursorAdapter.getItem(position)
            //get the data...
      }
});

关于android - 无法从游标适配器获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210446/

相关文章:

gradle 和 manifest 上的 Android sdk 版本

android - ImageView android :scaleType, 放大,居中垂直,左对齐?

java.sql.SQLException : No suitable driver found for jdbc:sqlite

android - ListView 在 Scroll 上改变数据

android - 如何在 Android 中使 ListView 透明?

android - Google Maps API v2 - 我无法在我的应用程序中显示 map

android - 语音识别处理器

java - SQLite:使用索引进行查询

Android studio - 没有连接设备的问题

android - 如何避免将 Fragment 重新创建到 ViewPager 中?