我有一个从ListActivity
延伸并实现OnItemClickListener
这是一个非常简单的测试类,我的想法是我在列表中选择一个项目,并在Toast
上显示所选项目。
我可以在模拟器上正常看到列表,我也可以看到点击该项目的效果,但没有任何反应。
我认为事件没有被解雇,因为我在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();
}
}
在Activitiy
文件中AndroidManifest.xml
的定义如下:
<activity android:name=".CarsListActivity" />
我有什么遗漏吗?
我研究了这个错误,我发现很多解决方案都说这涉及布局上的可点击性和可聚焦性属性。但我使用Android自己的android.R.layout.simple_list_item_1
,所以我真的不知道如何解决它。
我错过了一些配置吗?
答案 0 :(得分:5)
您需要注册OnItemClickListener(活动),如下所示:
getListView().setOnItemClickListener(this)
仅仅实现OnItemClickListener接口是不够的
答案 1 :(得分:0)
在setListAdapter()
下面的onCreate()中添加它 getListView().setOnItemClickListener(this);
答案 2 :(得分:-1)
在oncreate()
getListView().setOnItemClickListener(this);