1

我有一个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));
      }
});

假设我的数据库列如下:

身份证、姓名、姓氏、出生日期、身高、性别、出生地、婚姻状况。

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

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

下面的方法不起作用,因为我不在 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...
}
4

2 回答 2

4

你的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...
      }
});
于 2013-10-06T15:51:26.497 回答
-1

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
}
于 2013-10-06T15:36:11.053 回答