В Android я хочу предоставить пользователю список. Когда элемент в списке выбран, выполняется какое-то действие, и этот элемент списка становится недоступным для выбора. Он также «неактивен» или тому подобное, чтобы указать, что его нельзя выбрать при следующем отображении списка. Я видел переопределение isSelectable() в адаптере, но я считаю, что это приводит к тому, что элемент рассматривается как разделитель, что вызывает визуальные проблемы. И я не нашел способ «затенить» элемент. Есть идеи? Спасибо...
Список Android с элементами, выделенными серым цветом
Ответы (3)
Что касается выделения элемента серым цветом. Я не уверен, что это лучший способ, но это то, что я делаю:
view.setAlpha(75);
view.setBackgroundColor(Color.GRAY);
Я в основном делаю элемент прозрачным, а затем устанавливаю цвет фона на серый. Если вы повторно используете элементы списка, вы также должны вернуть их в исходное состояние, если условие не выполнено, то есть:
view.setAlpha(255);
view.setBackgroundColor(Color.WHITE);
то есть, если ваше исходное состояние не было прозрачным, а цвет фона был белым.
Вам нужно, чтобы представление было отключено. Если вы создаете представления, просто вызовите .setDisabled(boolean) в верхнем представлении. По моему опыту, отключение элемента списка не очень хорошо работает.
Вот решение, которое я использую. Я настроил OnItemClickListener для своего ListView. Когда элемент в списке щелкнут, я беру переданное представление и вызываю для него setEnabled(false). Это сделает элемент серым. Однако последующие щелчки по этому элементу по-прежнему будут вызывать метод onItemClick. Таким образом, вам нужно будет проверять при каждом щелчке, включен ли элемент или отключен, и действовать соответствующим образом.