禁用 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 项目上的点击事件的主要内容,如果未能解决你的问题,请参考以下文章