Android 未在ListActivity上调用onItemClick
我有一个从Android 未在ListActivity上调用onItemClick,android,listactivity,onitemclicklistener,Android,Listactivity,Onitemclicklistener,我有一个从ListActivity扩展而来的类,它实现了listListener 这是一个非常简单的测试类,其思想是我在列表中选择一个项目,并在Toast上显示所选项目 我可以在emulator上正常地看到列表,也可以看到单击该项的效果,但是什么都没有发生 我认为事件没有被触发,因为我在LogCat上看不到任何内容,以下是代码: public class CarsListActivity extends ListActivity implements OnItemClickLis
ListActivity
扩展而来的类,它实现了listListener
这是一个非常简单的测试类,其思想是我在列表中选择一个项目,并在Toast
上显示所选项目
我可以在emulator上正常地看到列表,也可以看到单击该项的效果,但是什么都没有发生
我认为事件没有被触发,因为我在LogCat上看不到任何内容,以下是代码:
public class CarsListActivity extends ListActivity implements
OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listCars()));
}
private List<String> listCars() {
return Arrays.asList("Ferrari", "Lamborghini", "Porsche");
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView textView = (TextView) view;
String message = "Selected car: " + textView.getText();
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
我有什么遗漏吗
我研究了这个错误,发现很多解决方案都说这与布局上的可点击性和聚焦性属性有关。但是我使用的是Android自己的Android.R.layout.simple\u list\u item\u 1
,所以我真的不知道如何修复它
我缺少一些配置吗?您需要像这样注册OnItemClickListener(活动):
getListView().setOnItemClickListener(this)
仅实现OnItemClickListener接口是不够的您需要像这样注册OnItemClickListener(活动):
getListView().setOnItemClickListener(this)
仅仅实现OnItemClickListener接口是不够的将此添加到setListAdapter()下面的onCreate()中
将此添加到setListAdapter()下面的onCreate()中
在oncreate()上使用此选项
在oncreate()上使用此选项
您的列表项真的是一个简单的TextView
?这不是一个线性布局吗?因为如果它是LinearLayout
,则不能将其强制转换为TextView
…可能必须通过ListView v=getListView()在itemClickListener上设置ListView;然后是v.setOnItemClickListener(这个);是的,就是这样。我犯了一个愚蠢的错误。根据官方文件,你应该执行onListItemClick
而不是onItemClick
,这意味着你不需要声明实现OnItemClickListener
。看看这里,你的列表项真的是一个简单的TextView
?这不是一个线性布局吗?因为如果它是LinearLayout
,则不能将其强制转换为TextView
…可能必须通过ListView v=getListView()在itemClickListener上设置ListView;然后是v.setOnItemClickListener(这个);是的,就是这样。我犯了一个愚蠢的错误。根据官方文件,你应该执行onListItemClick
而不是onItemClick
,这意味着你不需要声明实现OnItemClickListener
。看看这里哇,我现在不觉得自己很愚蠢吗:)就是这样。只要我同意,我就接受你的回答。谢谢!这是一个常见的错误,不用担心:)但你可能会从现在起记住:)@RodrigoSasaki,你不应该使用onListItemClick
而不是实现OnItemClickListener
?我不太确定,@yugidroid。我在遵循我买的一本书中的例子。我真的才刚刚开始学习。我会看看你上面的链接:)谢谢!两者都是有效的选择。OnItemClickListener提供了一个稍微松散耦合的解决方案,因为它只是接口的一部分,不会将您绑定到ListActivity类中。哇,我现在不觉得自己很愚蠢吗:)就是这样。只要我同意,我就接受你的回答。谢谢!这是一个常见的错误,不用担心:)但你可能会从现在起记住:)@RodrigoSasaki,你不应该使用onListItemClick
而不是实现OnItemClickListener
?我不太确定,@yugidroid。我在遵循我买的一本书中的例子。我真的才刚刚开始学习。我会看看你上面的链接:)谢谢!两者都是有效的选择。OnItemClickListener提供了一个稍微松散耦合的解决方案,因为它只是接口的一部分,不会将您绑定到ListActivity类中。
getListView().setOnItemClickListener(this);
getListView().setOnItemClickListener(this);