#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 я должен был контролировать, сколько элементов должно быть у каждого элемента.