我有一个数据库(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
}
});
答案 0 :(得分:1)
您无需从ListView
本身提取数据,只需提取用于填充列表的Array
数据。
由于onItemClick(...)
为您提供了所点击商品的position
,您可以......
使用ArrayAdapter
获取商品:
adapter.getItem(position)
从原始列表中获取数据:
list.get(position)
在上述任何一种情况下,由于您是从匿名内部类(OnItemClickListener
)检索数据,因此有问题的adapter
或list
必须是实例变量,不是局部变量(即将adapter
或list
定义为您班级的一部分,高于您的所有方法。)
答案 1 :(得分:0)
您可以在ArrayAdapter
中按位置AdapterView.OnItemClickListener
获取数据:
((ArrayAdapter) listview.getAdapter()).getItem(position);
答案 2 :(得分:0)
我可以看到你的代码,你得到了对象列表List<Client>
所以
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parentAdapter, View view,
int position, long id) {
Client client = list.get(position) ;
}
});
因为该位置是指列表中所选的索引