31

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

4

7 回答 7

95

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

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

总是为我工作。

于 2012-10-30T20:03:00.373 回答
16

一切变得更容易!list.setEnabled(假)

于 2014-06-08T22:58:22.760 回答
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>
于 2012-10-30T19:58:22.027 回答
3

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

android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
于 2018-12-20T13:05:32.733 回答
2

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

public boolean isEnabled(int position);

然后false在您要禁用点击时返回

于 2014-05-15T12:04:52.267 回答
0

也许您可以使用 if 语句来检查 OnClick 中列表视图条目的内容,如果它包含“无数据”则什么也不做,否则照常执行

于 2012-10-30T19:58:33.260 回答
0

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

@Override

public boolean isEnabled(int position) {
        if(data.get(position).isClickable==false)
        {
            return false;
        }
        return super.isEnabled(position);
    }
于 2014-09-19T06:12:04.400 回答