禁用 Android ListView 项目上的点击事件

Posted

技术标签:

【中文标题】禁用 Android ListView 项目上的点击事件【英文标题】:Disable Click Event on Android ListView Items 【发布时间】:2013-04-12 12:31:24 【问题描述】:

我正在尝试禁用列表视图上的多个单击事件,例如在按下第一次单击后,一些媒体会从 web 服务播放,当它被播放时,其他项目需要 clickable==false ,媒体播放后,其他列表项可以可点击。

我正在尝试在 ListView 对象上调用 setClickable(true)setClickable(false)

【问题讨论】:

在 MediaPlayer 播放期间在 ListView 上设置 setClickable(false),在 MediaPlayer 不播放时设置 setClickable(true) 尝试 setEnabled(false);对于列表视图 【参考方案1】:

在您的自定义 ArrayAdapter 覆盖 isEnabled 方法如下

@Override
public boolean isEnabled(int position) 
    return false;

【讨论】:

性感,最好的解决方案 :),在我列表中的 GroupHeader 上使用了这个!【参考方案2】:

使您自己的 ArrayAdapter 子类具有 AreAllItemsEnabled() 返回 false,并定义 isEnabled(int position) 为您要禁用的项目中的给定项目返回 false。

【讨论】:

到目前为止,我可以将一些 TextViews 本身标记为禁用,从而避免必须使用 isEnabled(int position) 方法。但是有 AreAllItemsEnabled() 方法存在并返回 false 是必要的,感谢您的提示。【参考方案3】:

将此添加到 xml

android:listSelector="@android:color/transparent"

【讨论】:

智能解决方案:仅当您不想看到触摸突出显示时。 -- 谢谢【参考方案4】:

为该列表创建适配器,并覆盖此方法

public boolean isEnabled(int position);

然后当你想禁用点击时返回false

【讨论】:

【参考方案5】:

使用标志管理 Click 事件。

当您的媒体播放器运行时,使用此方法将 click 设置为 false。

setClickable(false);

当您的媒体播放器停止或未运行或完成时,将该标志设置为默认值。

 setClickable(true);

【讨论】:

【参考方案6】:

上面说的答案对我不起作用,所以我使用了list.setEnabled(false) 它对我有用

【讨论】:

长列表无法滚动【参考方案7】:

在创建之前:

private long mLastClickTimeListViewItem = 0; 

为了防止多次点击 ListView Items

在listView的监听器内创建onCreate之后,在我的例子中如下:

    listView.setOnItemClickListener(new OnItemClickListener() 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

            if (SystemClock.elapsedRealtime() - mLastClickTimeListViewItem < 1000)
                return ;
            
            mLastClickTimeListViewItem = SystemClock.elapsedRealtime();

            //Do your remaining code magic below...
            ....
            ....

          // end of onItemClick method   
    ); // end of setOnItemClickListner

【讨论】:

【参考方案8】:

listView.getChildAt(position).setEnabled(false);

listView.getChildAt(position).setClickable(false);

【讨论】:

【参考方案9】:

或者以简单的方式取消注册和注册 OnItemClickListener 可能是一个更好的主意。

【讨论】:

【参考方案10】:

如果你想要的只是禁用可点击的项目并显示适当的选择器颜色,只需使用该行

android:listSelector="@android:color/transparent"

在布局文件(xml)中的列表视图中

【讨论】:

以上是关于禁用 Android ListView 项目上的点击事件的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何禁用 ListView?

禁用listView android中复选框的更改

禁用 ListView 项目单击然后启用它

Android:如何在listView上的项目中结合滑动手势和长按

Android 在 ListView 中启用下一个项目

如何在 Android 中计算 ListView 上的已检查项目