Я хочу создать интерфейс между адаптером и держателем вида (этот держатель вида является внутренним классом другого адаптера), так что я могу обновить текстовый вид (число) , Как я могу это сделать?Как создать интерфейс между адаптером и зрителем
Подробно:
У меня есть две точки зрения рециркуляция (Основной список Ресайклер Просмотр и Sub Список Ресайклер Вид горизонтально расположенных, как показано на рисунке), один имеющий ряд (в качестве одного из его элемента) и другие, имеющие флажок (как его элемент).
У меня есть два адаптера FilterMainListAdapter
и FilterSubListAdapter
с держателями зрения FilterMainListViewHolder
и FilterSubListViewHolder
заполнения поля.
Когда флажки выделены в представлении Recycler Sub List, я хочу, чтобы соответствующий номер в представлении Recycler главного списка обновлялся.
Для этого я использую интерфейс и интерфейс.
public interface ChangeFilterMainNumber {
void OnChangeFilterMainNumberListener(int totalCheckedNumber);
}
Я метод OnClick CheckBox в внутри FilterSubListViewHolder
, и я пытаюсь отправить общие флажки проверяются число следующим образом.
changeFilterMainNumber.OnChangeFilterMainNumberListener(totalCheckedNumber);
После этого, я реализация ChangeFilterMainNumber
интерфейса внутри FilterMainListViewHolder
public class FilterMainListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
ChangeFilterMainNumber {...}
Но Как я могу определить этот интерфейс внутри FilterSubListAdapter
?
changeFilterMainNumber = ???;
[Если это деятельность можно определить интерфейс, как этот changeFilterMainNumber = (ChangeFilterMainNumber) context
внутри конструктора по умолчанию FilterSubListAdapter
. Но как насчет держателя вида, который является внутренним классом другого адаптера?]
или есть лучший подход в поиске решения моей проблемы, кроме этого?
Update: Вы можете посмотреть на код здесь https://github.com/gSrikar/FilterScreen
Как получить ссылку на отдельный элемент в представлении Recycler главного списка перед его обновлением в 'OnChangeFilterMainNumberListener'? –
Я видел ваш проект выше, я обычно делаю так: в файле 'filter_main_list_items.xml' вы помещаете id во внешний вид, например' linearCover'. И в 'FilterMainListAdapter', метод onBindViewHolder, вы делаете, как выше моего кода ' holder.linearCover.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительными OnClick (View v) { если (слушатель! = NULL) { listener.OnChangeFilterMainNumberListener (позиция) } } }); ' –