禁用Android ListView项目上的Event



我试图禁用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)

相关内容

  • 没有找到相关文章

最新更新