Как inActive или отключить onClick всех строк в обзоре утилит, кроме одной строки, основанной на определенном условии? - PullRequest
0 голосов
/ 19 июня 2019

RecyclerView имеет несколько элементов строки. Теперь, основываясь на условии, мне нужно сделать активным определенную строку, а остальные отключить или размыть. Как я могу это сделать?

1 Ответ

0 голосов
/ 19 июня 2019

Это можно активировать разными способами. Я упомянул два способа.

//Take a class variable inside adapter.
int activeItemIndex = 0; //first item onClick enabled initially or -1 if non selected initially.

Теперь реализуем кнопку onClick, как показано ниже:

Тип 1: Используя условие внутри onClick ()

public void onBindViewHolder(....) {

    viewHolder.button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(position == activeItemIndex) {
                //do what you want to code here....
            } //do nothing if position is not activeItemIndex so it will act like disable.
        }
    });
}

Тип 2: Делая onClick () другого элемента равным нулю.

public void onBindViewHolder(....) {
    if(position == activeItemIndex) {
        viewHolder.button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do what you want to code here....
            }
        });
    } else {
        viewHolder.button1.setOnClickListener(null);
    }
}

Теперь следующее, что вам нужно сделать, это вызвать notifyDataSetChanged () рядом с кодом, где вы будете использовать условие для изменения значения для activeItemIndex . Так что где-то в вашем коде внутри onBindViewHolder () будет фрагмент кода вроде:

...
//Updating active onClick item position based on condition
if(condition) {
    activeItemIndex = position;
    notifyDataSetChanged();
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...