Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用Android ListView项目上的单击事件_Android_Listview_Clickable - Fatal编程技术网

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

禁用Android ListView项目上的单击事件,android,listview,clickable,Android,Listview,Clickable,我正在尝试禁用listview上的多个单击事件,例如,在按“第一次单击”后,某些媒体将从webservice播放,当播放时,其他项目需要clickable==false,播放媒体后,其他列表项目可以单击 我尝试的是在ListView对象上调用setClickable(true)和setClickable(false)。使您自己的ArrayAdapter子类has()返回false,并定义为要禁用的项中的给定项返回false。使用标志管理单击事件 当您的媒体播放器运行时,使用此方法将其设置为fal

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


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

使您自己的ArrayAdapter子类has()返回false,并定义为要禁用的项中的给定项返回false。

使用标志管理单击事件

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

setClickable(false);
当您的媒体播放机停止或未运行或处于完整状态时,请将该标志设置为默认值

 setClickable(true);
将其添加到xml中

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

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

为该列表创建适配器,然后重写此方法

public boolean isEnabled(int position);

如果要禁用自定义阵列中的click

,请返回
false
,如下所示

@Override
public boolean isEnabled(int position) {
    return false;
}
在重新创建之前:

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.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
if(SystemClock.elapsedRealtime()-mLastClickTimeListViewItem<1000){
返回;
}
mLastClickTimeListViewItem=SystemClock.elapsedRealtime();
//执行下面剩余的代码魔法。。。
....
....
}//mclick方法的结尾
}); // setOnItemClickListner的结尾

上述答案对我不起作用,因此我使用了
list.setEnabled(false)
它对我起作用

如果您只想选中可单击的项目并显示相应的选择器颜色,请使用该行

android:listSelector=“@android:color/transparent”

在布局文件中的listview(xml)

listview.getChildAt(位置).setEnabled(错误)


listView.getChildAt(位置).setClickable(错误)

在MediaPlayer播放期间在ListView上设置setClickable(假),在MediaPlayer未播放时设置setClickable(真)设置setEnabled(假);对于ListViews,到目前为止,将一些TextView本身标记为禁用对我来说是可行的,这样就避免了使用isEnabled(int-position)方法。但是有必要提供AreAllItemsEnabled()方法并返回false,谢谢你的提示。性感,最佳解决方案:),在我列表中的GroupHeader上使用了这个!非常好的一个+1长列表成为不可滚动的智能解决方案:仅当您不想看到触摸突出显示时。-谢谢