Android вложенный Recylcerview с разными подсчетами элементов

#android #nestedrecyclerview

#Android #nestedrecyclerview

Вопрос:

У меня есть вложенный recyclerview, и я просто хочу, чтобы он отображал разные номера элементов для каждого элемента родительского recyclerview.

Предполагается, что каждый элемент реализует количество просмотров в соответствии с каждым списком объектов модели, который был передан адаптеру

Это может выглядеть как макет, показанный на этом изображении

Вот мой родительский код адаптера

 public class ConstructionAdapter extends RecyclerView.Adapter<ConstructionAdapter.ConstructionViewHolder> {

private RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();
private final List<ConstructionModel> constructionList;

public ConstructionAdapter(List<ConstructionModel> constructionList) {
    this.constructionList = constructionList;
}

@NonNull
@Override
public ConstructionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.construction_cranes_view_item, parent, false);

    return new ConstructionViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ConstructionViewHolder holder, int position) {

    holder.setContent(constructionList.get(position));

}

@Override
public int getItemCount() {
    return constructionList.size();
}

public class ConstructionViewHolder extends RecyclerView.ViewHolder {
    private TextView categoeyTitleTV;
    private RecyclerView constructionRecyclerView;

    private ConstructionViewHolder(@NonNull View itemView) {
        super(itemView);
        categoeyTitleTV = itemView.findViewById(R.id.category_title_tv);
        constructionRecyclerView = itemView.findViewById(R.id.construction_item_recycler);
    }

    private void setContent(ConstructionModel model) {
        LinearLayoutManager layoutManager = new LinearLayoutManager(itemView.getContext());
        constructionRecyclerView.setLayoutManager(layoutManager);
        categoeyTitleTV.setText(model.getCraneCategory());
        layoutManager.setInitialPrefetchItemCount(model.getSubCategoryList().size());
        IndustrialCranesAdapter subCatAdapter = new IndustrialCranesAdapter(model.getSubCategoryList());
        constructionRecyclerView.setAdapter(subCatAdapter);
        constructionRecyclerView.setRecycledViewPool(viewPool);

    }
}
  

}

Вот мой внутренний адаптер recyclerview

 public class IndustrialCranesAdapter extends RecyclerView.Adapter<IndustrialCranesAdapter.IndustrialCranesViewHolder> {
private final List<Crane> industrialCranesList;

public IndustrialCranesAdapter(List<Crane> industrialCranesList) {
    this.industrialCranesList = industrialCranesList;
}

@NonNull
@Override
public IndustrialCranesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.crane_item, parent, false);

    return new IndustrialCranesViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull IndustrialCranesViewHolder holder, int position) {
    holder.setCranesItems(industrialCranesList.get(position));
}

@Override
public int getItemCount() {
    return industrialCranesList.size();
}

public class IndustrialCranesViewHolder extends RecyclerView.ViewHolder {
    private TextView craneTitle;
    private ImageView craneImage;

    private IndustrialCranesViewHolder(@NonNull View itemView) {
        super(itemView);
        craneTitle = itemView.findViewById(R.id.industrial_crane_title);
        craneImage = itemView.findViewById(R.id.industrial_crane_image_view);
        
        itemView.getRootView().setOnClickListener(v->{
            Toast.makeText(itemView.getContext(), "Clicked", Toast.LENGTH_SHORT).show();
        });
    }
    private void setCranesItems(Crane crane){
        craneTitle.setText(crane.getCraneTitle());
        craneImage.setImageResource(crane.getCraneImage());
    }
}
  

}

Комментарии:

1. Я рекомендую вам использовать разделенный список. Один адаптер и один recyclerview. Просто в использовании! смотрите это: myandroidsolutions.com/2019/07/18 /…

2. Итак, какую ошибку вы получаете из приведенного выше кода?

3. @lolloCreator Спасибо, что я искал, ты сэкономил мое время ♥

4. @Changer Я получал все элементы, реализованные в каждом элементе внутреннего recyclerview, но с ответом LolloCreato я должен был контролировать, сколько элементов должно быть у каждого элемента.