Итак, подумайте о категориях с разным количеством предметов в каждой. Прямо сейчас я использую два 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());
}