Java Android ListView-获取所选项目
我已经使用自定义阵列适配器实现了一个列表视图。现在我想获取列表视图中的选定项。我知道有使用onclick侦听器的解决方案。但是,我想使用ListView(AdapterView)类的getSelectedItem()方法。该方法始终返回null。其他getSelected*方法也不起作用Java Android ListView-获取所选项目,java,android,listview,android-listview,android-arrayadapter,Java,Android,Listview,Android Listview,Android Arrayadapter,我已经使用自定义阵列适配器实现了一个列表视图。现在我想获取列表视图中的选定项。我知道有使用onclick侦听器的解决方案。但是,我想使用ListView(AdapterView)类的getSelectedItem()方法。该方法始终返回null。其他getSelected*方法也不起作用 // onCreate mList = (ListView) findViewById(R.id.listView); // set in Broadcast Receiver (inner clas
// onCreate
mList = (ListView) findViewById(R.id.listView);
// set in Broadcast Receiver (inner class)
mList.setAdapter(new ListAdapter(getApplicationContext(),
R.layout.list_view_item, R.id.textView,
itemList));
// onButtonClick
Log.i(TAG, "Selected: " + mList.getSelectedItem());
OnButtonClick是一个单独按钮的回调。如果我单击它,所选项目应该在logcat中打印,但每次都返回null。有人能帮我吗
XML:
如果我选择了一个项目,颜色会改变。实现你的类
public class xyz extends Activity implements OnItemSelectedListener
然后给出该活动的详细信息
mList.setOnItemSelectedListener(this);
现在实现所选方法
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// u will get the position and selected item here
}
@覆盖
已选择公共位置(AdapterView父对象、视图、整型位置、,
长id){
//您将在此处获得位置和所选项目
}
实现你的课程
public class xyz extends Activity implements OnItemSelectedListener
然后给出该活动的详细信息
mList.setOnItemSelectedListener(this);
现在实现所选方法
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// u will get the position and selected item here
}
@覆盖
已选择公共位置(AdapterView父对象、视图、整型位置、,
长id){
//您将在此处获得位置和所选项目
}
我检查了getSelectedItem源代码
public Object getSelectedItem() {
T adapter = getAdapter();
int selection = getSelectedItemPosition();
if (adapter != null && adapter.getCount() > 0 && selection >= 0) {
return adapter.getItem(selection);
} else {
return null;
}
}
也许您应该检查
ListAdapter
中的getItem
方法,我检查getSelectedItem源代码
public Object getSelectedItem() {
T adapter = getAdapter();
int selection = getSelectedItemPosition();
if (adapter != null && adapter.getCount() > 0 && selection >= 0) {
return adapter.getItem(selection);
} else {
return null;
}
}
也许你应该检查一下
列表适配器中的getItem
方法我发现在触摸设备上从来没有/很少调用所选的方法。
如果您使用emulator交叉导航,并且在带有混合或非触摸控制的特殊设备上,它会启动。只有在滚动列表时才会调用,但单击列表时不会调用
这就是为什么你应该在带有触摸控制的普通平板电脑/智能手机上使用OnItemClickListener的原因。我发现OnItemSelected方法在触摸设备上从未/很少被调用。
如果您使用emulator交叉导航,并且在带有混合或非触摸控制的特殊设备上,它会启动。只有在滚动列表时才会调用,但单击列表时不会调用
这就是为什么您应该在带有触摸控制的普通平板电脑/智能手机上使用OnItemClickListener。请发布您的XML我想我没有在您的XML中声明您的项目您能告诉我们更多关于您的应用程序吗?您希望在哪种情况下获取所选项目?@user2572585我对误解感到抱歉:我删除了我的解决方案,因为它显然与您的问题不匹配。@Rick77没问题;)你想帮忙。所以,谢谢。不,不幸的是,它不起作用。不过谢谢你的努力!我想我会在侦听器中使用该解决方案,因为它看起来非常耗时……请发布您的XML我想我没有在您的XML中声明您的项目。您能告诉我们有关您的应用程序的更多信息吗?您希望在哪种情况下获取所选项目?@user2572585我对误解感到抱歉:我删除了我的解决方案,因为它显然与您的问题不匹配。@Rick77没问题;)你想帮忙。所以,谢谢。不,不幸的是,它不起作用。不过谢谢你的努力!我想我会在侦听器中使用这个解决方案,因为它看起来非常耗时……ChinaAnichen的答案非常有趣:getAdapter的Log.d是什么,getCount,在getSelectedItem之前?是的,答案很有趣。但是,自定义适配器不是问题所在。看来一切都好。我也用ArrayAdapter试过了,我也遇到了同样的问题。ChinaAnichen的答案很有趣:getAdapter的Log.d是什么,getCount,在getSelectedItem之前?是的,答案很有趣。但是,自定义适配器不是问题所在。看来一切都好。我也用ArrayAdapter试过了,我也遇到了同样的问题。上的这篇博文有更多的背景。上的这篇博文有更多的背景。