У меня есть RecyclerView с фотографиями, и я хочу, чтобы при нажатии на фотографию она имела бы полную непрозрачность, в то время как все другие виды имели бы непрозрачность 0,5f.
Я пробовал много разных способов, и ни один из них не прошел тест по той же причине. Вот пример простой попытки, которая в любом случае не выполнила бы задачу очень хорошо (потому что она обрабатывает только 2 вида одновременно), но хорошо бы объяснила стену, с которой я сталкиваюсь:
fun changeRecyclerViewOpacity(currentPosition : Int){
val clickedView = myLayoutManager.findViewByPosition(currentPosition)
val previouslyClickedView = myLayoutManager.findViewByPosition(lastPosition)
clickedView!!.alpha = 1f
previouslyClickedView!!.alpha = 0.5f
lastPosition = currentPosition
}
Проблема, с которой я сталкиваюсь при использовании этого и других подходов, которые я пробовал, заключается в том, что если (например) экран содержит 3 изображения одновременно, а lastPosition - 2, а currentPosition - 10, приложение вылетает, потому что layoutManager не имеет представления, которое принадлежит lastPosition на экране, поэтому он не может выполнить команду.
Если я этого не сделаю, то при использовании прокрутки к этому представлению у него все равно будет альфа на 1.0f.
Если бы существовал совершенно другой подход, я бы с удовольствием его услышал. Все, что я хочу, это чтобы изображение было полностью прозрачным, а все остальные - 0.5f.