Intereting Posts

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

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

Solutions Collecting From Web of "Как отключить нажатие на ListView в android?"

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

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

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

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

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

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

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

 public boolean isEnabled(int position); 

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

Возможно, вы могли бы использовать оператор if для проверки содержимого записи listview в OnClick, если он содержит «Нет данных», ничего не делать, иначе обычные

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

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