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);