如何禁用在Android中单击ListView?

时间:2012-10-30 19:53:40

标签: android listview clickable

我有一个ListView,我正在填充数据库中的值。如果数据库为空,我将ListView的第一项设置为“无数据”。我想禁用点击此项目。我用过ArrayAdapter。我尝试制作areAllItemsEnabled,isEnabled为false,但它没用。即使我将ListView的isClickable和setEnabled设置为false,也没用。我将OnItemClickListener的代码放在else条件中,即使这样也不会阻止列表项被点击。有人有替代解决方案吗?谢谢!

7 个答案:

答案 0 :(得分:90)

在自定义ArrayAdapter中使用isEnabled函数返回false:

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

总是适合我。

答案 1 :(得分:14)

更容易! list.setEnabled(假)

答案 2 :(得分:9)

您可以设置显示的空视图,它将自动处理:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingLeft="8dp"
         android:paddingRight="8dp">

     <ListView android:id="@android:id/list"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="false"/>

     <TextView android:id="@android:id/empty"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:text="No data"/>
 </LinearLayout>

答案 3 :(得分:2)

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

public boolean isEnabled(int position);

然后在您要停用点击

时返回false

答案 4 :(得分:0)

也许您可以使用if语句来检查OnClick中listview条目的内容,如果它包含“没有数据”的话。什么也不做,否则做通常的

答案 5 :(得分:0)

我根据我的要求确实喜欢这个希望它可以帮助你一些

@Override

public boolean isEnabled(int position) {
        if(data.get(position).isClickable==false)
        {
            return false;
        }
        return super.isEnabled(position);
    }

答案 6 :(得分:0)

尝试在ListView上设置这两个属性:

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