我有一个数据库(db)来自我获取的值(名称,电子邮件地址,电话号码等),我将其放入列表并显示在ListView中 . 如果我点击一个项目,我可以从点击的项目中获取整个数据吗?因为我需要前 . 电子邮件地址发送电子邮件我可以从项目中提取数据,因为从数据库获取数据时是“客户”类型 .
List list = db.getAllClients();
final ListView listview = (ListView) findViewById(R.id.listView_ID);
listview.setClickable(true);
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, list);
listview.setAdapter(adapter);
registerForContextMenu(listview);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parentAdapter, View view,
int position, long id) {
// some code
}
});
3 回答
您不需要从
ListView
本身提取数据,只需要用于填充列表的Array
.由于
onItemClick(...)
为您提供了点击项目的position
,您可以......ArrayAdapter
获取项目:adapter.getItem(position)
list.get(position)
在上述任何一种情况下,由于您是从匿名内部类(
OnItemClickListener
)检索数据,所以adapter
或list
需要是实例变量而不是局部变量(即将adapter
或list
定义为您的一部分)上课,高于你所有的方法) .您可以在
AdapterView.OnItemClickListener
中按位置从ArrayAdapter
获取数据:正如我可以看到你的代码,你得到了对象列表
List<Client>
所以因为该位置引用了列表的选定索引