0

我有一个从扩展ListActivity和实现的类OnItemClickListener

这是一个非常简单的测试类,想法是我在列表中选择一个项目,它会在Toast.

我在模拟器上可以正常看到列表,也可以看到点击item的效果,但是之后什么都没有发生。

我不认为该事件被触发,因为我在 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,所以我真的不知道如何修复它。

我错过了一些配置吗?

4

3 回答 3

5

您需要像这样注册 OnItemClickListener (活动):

getListView().setOnItemClickListener(this)

仅仅实现 OnItemClickListener 接口是不够的

于 2013-06-27T12:27:15.520 回答
0

在 setListAdapter() 下面的 onCreate() 中添加这个

    getListView().setOnItemClickListener(this);
于 2013-06-27T13:07:18.787 回答
-1

用这个oncreate()

getListView().setOnItemClickListener(this);
于 2014-06-17T07:12:45.123 回答