onItemClick未在ListActivity上调用

时间:2013-06-27 12:22:33

标签: android listactivity onitemclicklistener

我有一个从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,所以我真的不知道如何解决它。

我错过了一些配置吗?

3 个答案:

答案 0 :(得分:5)

您需要注册OnItemClickListener(活动),如下所示:

getListView().setOnItemClickListener(this)

仅仅实现OnItemClickListener接口是不够的

答案 1 :(得分:0)

在setListAdapter()

下面的onCreate()中添加它
    getListView().setOnItemClickListener(this);

答案 2 :(得分:-1)

oncreate()

上使用此功能
getListView().setOnItemClickListener(this);