android:识别ListView行中的单个项目?

android:识别ListView行中的单个项目?,android,listview,row,items,identify,Android,Listview,Row,Items,Identify,我在由数据库表填充的ListActivity中有一个ListView。ListView的每一行都是一个RelativeLayout,其中有三个文本视图,依次命名为rowid、date和name。我能够使用ListView的.setSelection(int-position)方法以编程方式选择单个行 下面是我试图做的:当我按下界面上的按钮时,从当前选择的列表行获取rowid,并使用rowid执行db查询。我不知道如何从列表本身获取rowid。rowid可能与列表中的ID或位置不同,因为它是数据库

我在由数据库表填充的ListActivity中有一个ListView。ListView的每一行都是一个RelativeLayout,其中有三个文本视图,依次命名为rowid、date和name。我能够使用ListView的.setSelection(int-position)方法以编程方式选择单个行

下面是我试图做的:当我按下界面上的按钮时,从当前选择的列表行获取rowid,并使用rowid执行db查询。我不知道如何从列表本身获取rowid。rowid可能与列表中的ID或位置不同,因为它是数据库中的rowid


我怀疑这需要使用适配器,但我已经尝试/搜索web一周了,还没有弄明白这一点。谢谢任何人能提供的帮助

您知道当前所选项目的列表位置,在ListView外部有一个按钮,该按钮应触发对该项目的某些操作,并且您不仅仅是使ListView行(或每行中的某个子视图)可单击。对吧?

您可以从列表的适配器获取信息。getItem(int position)返回由位于位置的列表项表示的对象,因此,如果所需信息存储在对象中,则可以直接检索该信息。getView(int position)返回该行的视图,允许您使用findViewById(int id)检索TextView

如果您还没有适配器,可以使用getAdapter()从ListView获取它


您还可以考虑用户是否轻击ListVIEW行,而不是选择行,然后按下另一个按钮更自然。雷诺的答案可能会更好。

我最后使用了最后一种方法,并使用了以下代码

int dbRowId;
Adapter adapter = myListView.getAdapter();

View listViewRow = adapter.getView(selectedRow);
TextView dbRowView = (TextView) listViewRow.findViewById(R.id.rowid, null, null);
String dbRowAsString = dbRowView.getText().toString();
dbRowId = Integer.parseInt(dbRowAsString);
我必须做的唯一更改是在.findviewbyd中的参数中添加null,null

TextView dbRowView = (TextView) listViewRow.findViewById(R.id.rowid, null, null);

这正是我想要的。非常感谢你!多棒的社区啊。
TextView dbRowView = (TextView) listViewRow.findViewById(R.id.rowid, null, null);