禁用Android ListView项目上的Click事件

时间:2013-04-19 07:09:17

标签: android listview clickable

我正在尝试禁用listview上的多个点击事件,比如说按下第一次点击某些媒体从webservice播放,播放时,其他项目需要clickable==false,媒体播放后,其他列表项目可以点击。

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

10 个答案:

答案 0 :(得分:61)

在您的自定义ArrayAdapter overEnabled方法中,如下所示

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

答案 1 :(得分:34)

创建自己的ArrayAdapter子类,其中AreAllItemsEnabled()返回false,并定义isEnabled(int position)以返回您要禁用的项目中给定项目的false。

答案 2 :(得分:14)

将其添加到xml

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

答案 3 :(得分:3)

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

public boolean isEnabled(int position);

然后在您要停用点击

时返回false

答案 4 :(得分:2)

使用标记管理Click事件。

当您的媒体播放器正在运行时,请使用此方法单击为false。

setClickable(false);

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

 setClickable(true);

答案 5 :(得分:2)

在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

答案 6 :(得分:2)

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

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

答案 7 :(得分:1)

上述答案对我没有用,所以我使用list.setEnabled(false)它为我工作

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

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

机器人:listSelector =&#34; @android:彩色/透明&#34;

在布局文件(xml)中的listview中