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