无法获得从游标适配器数据(can't getting data from cursor ad

2019-10-18 17:30发布

我有一个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,姓名,出生日期,身高,性别,placeOfBirth,maritalStatus。

然而,我显示我的列表视图(row.xml)只有名字和姓氏。 但每当在某一行中的列表中的用户点击,我要检索的数据的其余部分也是如此,例如ID,或该行的性别点击。

问题是,我不显示所有从DB行的信息在我的名单,然而,当名单上的用户按我需要找回一些该列表中的数据。 我如何能做到这一点吗?

下面的方法是不行的,因为我在ListActivity,只是活动我不是。

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...
}

Answer 1:

arg0在参数OnItemClickListener 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...
      }
});


Answer 2:

里面的getView方法,你应该使用这样的

view.setTag(data); // you can pass here your specific data for each item

假设你的数据仅仅是一个整数,那么你可以从一开始这个值onItemClick()以这种方式:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Integer data = (Integer) view.getTag();
    // your operation
}


文章来源: can't getting data from cursor adapter