У меня есть recyclerview
. Я хочу достичь одной функциональности, но не могу ее реализовать. Мой элемент RecyclerView имеет 2 textView
и button
.
public class Task {
private String id;
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Итак, позвольте мне объяснить немного. Кнопка в моем элементе recyclerView
использует stateListDrawable
, поэтому она становится активной / неактивной при нажатии. Когда пользователь нажимает на кнопку, и она становится активной, я должен отправить данные элемента (название, идентификатор) в бэкэнд. И когда пользователь нажимает на неактивную кнопку, я отправляю запрос на удаление в бэкэнд для этого элемента. Но проблема в том, что пользователь может нажимать несколько раз на одну и ту же кнопку, и я не хочу каждый раз отправлять запрос на выполнение. Например, я могу нажимать одну и ту же кнопку 4 раза в секунду, и она становится активной / неактивной, поэтому я не хочу делать 4-5 запросов в секунду. Я думаю, что решение состоит в том, чтобы добавить задержку для событий клика, и, например, через 500 или 1000 мс после клика отправить данные в бэкэнд. Я пытался использовать Handler
и на самом деле это сработало. Например, когда я нажимал 2-й, а затем 4-й и 5-й элементы, после секунды каждого щелчка я мог отправлять данные в бэкэнд. Но есть и проблема. Когда я нажимаю на одну и ту же кнопку несколько раз, через секунду она отправляет на сервер несколько запросов. Я пытался сделать removeCallbacksAndMessages()
на каждом клике перед запуском обработчика, но есть и другая проблема. Например, когда я щелкаю несколько раз по второму элементу и после этого нажимаю по третьему элементу, я отправляю только данные третьего элемента в бэкэнд. Но я хочу отправить данные 2-го и 3-го элементов в бэкэнд. Так может ли кто-нибудь помочь мне достичь этой функциональности?