如何从列表视图中的选定项目获取值?
问题描述:
这是我的代码到目前为止。这是工作,但它只显示我在listView中的第一个值,而不是用户选择的项目。请用这个来激励我。这非常重要。如何从列表视图中的选定项目获取值?
unitListView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
unitListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// selected item
TextView t1 = (TextView) findViewById(R.id.lblLUnitName);
String name=t1.getText().toString();
// String a= (String) unitListView.getItemAtPosition(position);
// touchpressed=position;
Toast.makeText(getApplicationContext(), "Selected Item :" +name, Toast.LENGTH_SHORT).show();
}
});
答
查看只是为了显示UI上的一些值。如果您想获得实际的价值,请使用position
从您的ListAdapter
中获取价值。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
YourItemClass item = (YourItemClass)listAdapter.getItem(position);
//[...]
}
另一种方法是从你的unitListView
直接拿到ListAdapter
:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object item = unitListView.getAdapter().getItem(position);
//[...]
}
答
更新你的代码如下,并尝试;
unitListView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
unitListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
TextView t1 = (TextView) findViewById(R.id.lblLUnitName);
String name=String.valuesOf(position);
Toast.makeText(getApplicationContext(), "Selected Item :" +name, Toast.LENGTH_SHORT).show();
}
});
+0
一旦我改变像TextView t1 =(TextView)view.findViewById(R.id.lblLUnitName);这是工作!感谢您的帮助.. :) – 2015-04-01 16:58:33
答
替换TextView t1 = (TextView) findViewById(R.id.lblLUnitName);
通过
TextView t1 = (TextView) view.findViewById(R.id.lblLUnitName);
相反的TextView T1 =(TextView的)findViewById(R.id.lblLUnitName)的;你可以请尝试TextView t1 =(TextView)view.findViewById(R.id.lblLUnitName); – 2015-04-01 16:31:06
Ohhhh yessss !!!它正在工作!谢谢你太多了! – 2015-04-01 16:55:43
太棒了。一个upvote将不胜感激:) – 2015-04-01 17:58:43