Как я могу показать переменные номера элементов во вложенном RecyclerView другого RecyclerView? - PullRequest
0 голосов
/ 20 марта 2020

Итак, подумайте о категориях с разным количеством предметов в каждой. Прямо сейчас я использую два RecyclerViews, один вложенный в другой, каждый со своим собственным адаптером. Первый отображает каждый экземпляр категории (например, дни) и экземпляр второго адаптера. Второй адаптер отображает элементы, которые в идеале хотят попасть в первую категорию (например, минуты, секунды).

Проблема заключается в том, что поскольку каждый раз при создании и передаче элемента списка первый RecyclerView заполняется агрегированными элементами со второго. Это имеет смысл, потому что второй по-прежнему добавляется каждый раз, когда список обновляется.

Как я могу контролировать количество отображаемых элементов второго RecyclerView? В идеале я хочу, чтобы они были податливыми, т. Е. Каждый элемент «День» в первом может содержать столько же или несколько «минутных» записей во втором. Коды адаптеров приведены ниже. Спасибо!

Первый адаптер:

>

     public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.recycler_rows, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;

>     public void onBindViewHolder(@NonNull RemindersAdapter.ViewHolder holder, int position) {
        holder.recyclerTwo.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
        holder.month.setText(reminderList.get(position).getMonth());
        subAdapter = new SubAdapter(reminderList, mContext);
        holder.recyclerTwo.setAdapter(subAdapter);
    }

Второй адаптер:

>     public SubAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.sub_rows, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
    return viewHolder; }

>     @Override
    public void onBindViewHolder(@NonNull SubAdapter.ViewHolder holder, int position) {
        holder.hour.setText(reminderList.get(position).getHour());
        holder.content.setText(reminderList.get(position).getContent());
    }

1 Ответ

0 голосов
/ 20 марта 2020

Просто верните другой номер из getItemCount() во втором адаптере. Во вложенном регистре нет ничего особенного, что могло бы сломать это.

Похоже, ваша проблема может заключаться в том, что вы передаете один и тот же список в каждый субадаптер:

subAdapter = new SubAdapter(reminderList, mContext);

Возможно, вы хотели передавать только подпункты в.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...