我在 ListActivity 中有一个由数据库表填充的 ListView。 ListView 的每一行都是一个relativelayout,其中包含三个依次命名为 rowid、date 和 name 的 TextView。我可以使用 ListView 的 .setSelection(intposition) 方法以编程方式选择单独的行。
这就是我想要做的:当我按下界面上的按钮时,从当前选定的列表行中获取 rowid,并使用 rowid 执行数据库查询。我不知道如何从列表本身获取 rowid 。 rowid 可能与列表中的 ID 或位置不同,因为它是数据库中的 rowid。
我怀疑这需要使用适配器,但我已经尝试/搜索网络一周了,但无法弄清楚这一点。感谢任何人都可以提供的帮助。
您知道当前所选项目的列表位置,ListView 外部有一个按钮,该按钮应该触发该项目的某些操作,并且您不仅仅是使 ListView 行(或每行中的某些子视图)可单击。正确的?
您可以从列表的适配器获取信息。 getItem(intposition) 返回由位置处的列表项表示的对象,因此如果该信息存储在该对象中,您可以直接检索所需的信息。 getView(intposition) 返回行的视图,允许您使用 findViewById(int id) 来检索 TextView。
如果您还没有适配器,可以使用 getAdapter() 从 ListView 获取它。
// ListView myListView = the ListView in question
// int selectedRow = the currently selected row in the ListView
// Each row in the ListView is backed by an object of type MyCustomDataClass
int dbRowId;
Adapter adapter = myListView.getAdapter();
MyCustomDataClass data = (MyCustomDataClass) adapter.getItem(selectedRow);
dbRowId = data.getDatabaseRowId();
// OR
dbRowId = data.rowId;
// OR whatever method the object has for getting the ID.
// OR
View listViewRow = adapter.getView(selectedRow);
TextView dbRowView = (TextView) listViewRow.findViewById(R.id.rowid);
String dbRowAsString = dbRowView.getText().toString();
dbRowId = Integer.parseInt(dbRowAsString);
您还可能会考虑,对于用户来说,直接点击 ListView 行是否比选择该行然后按另一个按钮更自然。雷诺的答案可能会更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)