android - ListView 的 OnItemClick 不起作用

标签 android android-listview onitemclicklistener

我制作了一个 ListView 。 使用this教程链接 它工作正常。 但问题是当我尝试在其 Activity 类中添加 onitemclick 监听器时,点击操作不起作用。我只想显示一条消息。这里是 onItemClickListener 的代码

listViewCity.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

                    String item = ((TextView)v).getText().toString();

                    Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();

            }  
        });

为什么它不起作用有人能告诉我吗???

最佳答案

如果您遇到异常或强制关闭,您应该已经提及。

首先,您的 OnItemClickListener 是错误的,因为传递给您的 OnClickListener 的 View 不是 TextView,因此您不能将它强制转换为 TextView。

您可以使用以下方法修复它:

listViewCity.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
        String item = ((TextView)v.findViewById(R.id.cityName)).getText().toString();
            Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();

    }  
});

试试我刚才做的,它应该可以工作。如果它不起作用,您可能需要从 xml 文件中删除行 android:autoLink="web"


android:autoLink="web" 属性使您的 View 的 TextView 可点击。正如我在评论中提到的,如果您的任何 subview 是可点击的,您的 OnItemClickListener 将不会收到事件,因为它将被 children 使用。

关于android - ListView 的 OnItemClick 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401748/

相关文章:

java - 如何使我的变量 = 下拉菜单中的项目

java - GridView中过滤商品,OnItemClick传递不同的商品详情

android - 更改 androidTest list 中的 manifestPlaceholders

android - LifecycleRegistry 实例何时开始监听 LifecycleOwner 的生命周期变化?

java - 如何获取ListView中显示的Spinners的值?

java - 如何不再加载所有 ListView 项目?

android - monodroid expandablelistview.itemclick 不会被 customview c# 调用

android - 无法使用 Android 上的 ExoPlayer 或 Mac 上的 Quicktime 从网络摄像头播放 MPEG-TS

android - 在 Android View 上更改 LayoutParams 没有任何效果,即使在调用 requestLayout 之后也是如此

android - ListView 占用了 LinearLayout 中的所有空间