我试图禁用listview上的多个点击事件,说按下第一次点击后,一些媒体从webservice播放,而它播放,其他项目需要是clickable==false
,媒体播放后,其他列表项目可以点击。
我尝试的是在ListView
对象上调用setClickable(true)
和setClickable(false)
。
在您的自定义ArrayAdapter中重写isEnabled方法,如下所示
@Override
public boolean isEnabled(int position) {
return false;
}
创建你自己的ArrayAdapter子类,AreAllItemsEnabled()返回false,并定义isEnabled(int position)为你想要禁用的一个给定项目返回false。
添加到xml
android:listSelector="@android:color/transparent"
为该列表创建适配器,并覆盖此方法
public boolean isEnabled(int position);
然后返回false
当你想禁用点击
管理使用标志的点击事件。
当您的媒体播放器正在运行时,使用此方法单击为false。
setClickable(false);
当您的媒体播放器停止或未运行或完全设置该标志为默认值时。
setClickable(true);
上面说的答案对我不起作用,所以我使用list.setEnabled(false)
它对我有效
before onCreate:
private long mLastClickTimeListViewItem = 0;
防止多次点击ListView项
在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
listView.getChildAt(position).setEnabled(false);
listView.getChildAt(位置).setClickable(假);
或者以简单的方式取消注册并注册OnItemClickListener可能是一个更好的主意。
如果你只是想禁用可点击项并显示适当的选择器颜色,只需使用
行android: listSelector = " @android:颜色/透明"
布局文件(xml)