Подтвердить что ты не робот

Как отключить нажатие на ListView в android?

У меня есть ListView, который я заполняю значениями из моей базы данных. Если база данных пуста, я устанавливаю первый элемент ListView в "Нет данных". Я хочу отключить нажатие на этот элемент. Я использовал ArrayAdapter. Я попытался сделать areAllItemsEnabled, isEnabled false, но это бесполезно. Даже если я установил ListView isClickable и setEnabled в false, это бесполезно. И я поместил код для OnItemClickListener в условие else, даже это не остановит элемент списка, который можно щелкнуть. Есть ли у кого-то альтернативное решение? Спасибо!

4b9b3361

Ответ 1

В вашем пользовательском ArrayAdapter используется функция isEnabled для возврата false:

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

всегда работает для меня.

Ответ 2

все проще! list.setEnabled(ложь)

Ответ 3

Вы можете установить пустой вид, как показано, и он будет обрабатываться автоматически:

 <?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>

Ответ 4

создайте адаптер для этого списка и замените этот метод

public boolean isEnabled(int position);

затем верните false, если вы хотите отключить клик

Ответ 5

Возможно, вы могли бы использовать оператор if, чтобы проверить содержимое элемента listview в OnClick, если он содержит "Нет данных", ничего не делать, иначе обычный

Ответ 6

Мне понравилось это, согласно моему требованию, надеюсь, что это может помочь вам как-то

@Override

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

Ответ 7

Попробуйте установить эти два атрибута в ListView:

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