如何在父 RecyclerView 中有一个 ListView/RecyclerView?
How to have a ListView/RecyclerView inside a parent RecyclerView?
我想添加一些子视图(列表项),它们来自 JSON 格式化数据。每个子列表都在父列表项行下。如何在 RecyclerView
中为每个行项目(具有子列表项目的父项目)填充它?
我曾尝试在 RecyclerView
父行中使用 RecyclerView
(用于填充子列表),但此处子视图不可见。
父适配器Class
public class DigitizedPrescAdapter extends RecyclerView.Adapter<DigitizedPrescAdapter.ListItemViewHolder>{
private List<PrescriptionModal> prescriptionList;
MedicinesInPrescAdapter adapter;
public DigitizedPrescAdapter(List<PrescriptionModal> prescriptionListModal) {
if (prescriptionListModal == null) {
throw new IllegalArgumentException(
"PrescriptionList must not be null");
}
this.prescriptionList = prescriptionListModal;
}
@Override
public ListItemViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.item_row_digitised_request,
viewGroup,
false);
return new ListItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(
ListItemViewHolder viewHolder, int position) {
PrescriptionModal model = prescriptionList.get(position);
viewHolder.prescnum.setText("Prescription "+ ++position);
viewHolder.prescNo.setText("Prescription: "+model.getPrescriptionID());
viewHolder.doctorType.setText("Type: "+model.getDoctorType());
viewHolder.doctorName.setText("Doctor: "+model.getDoctorName());
viewHolder.patientName.setText("Patient: "+model.getPatientName());
adapter = new MedicinesInPrescAdapter(model.getLstproduct());
viewHolder.lstMedicines.setAdapter(adapter);
}
@Override
public int getItemCount() {
return prescriptionList.size();
}
public final static class ListItemViewHolder
extends RecyclerView.ViewHolder {
TextView prescnum;
TextView prescNo;
TextView doctorType;
TextView patientName;
TextView doctorName;
CheckBox selectAll;
RecyclerView lstMedicines;
public ListItemViewHolder(View itemView) {
super(itemView);
prescnum = (TextView) itemView.findViewById(R.id.prescnum);
prescNo = (TextView) itemView.findViewById(R.id.prescNo);
doctorType = (TextView) itemView.findViewById(R.id.doctorType);
patientName = (TextView) itemView.findViewById(R.id.patientName);
doctorName = (TextView) itemView.findViewById(R.id.doctorName);
selectAll = (CheckBox) itemView.findViewById(R.id.selectAll);
lstMedicines = (RecyclerView) itemView.findViewById(R.id.lstAllMedicines);
MyLinearLayoutManager layoutManager = new MyLinearLayoutManager(itemView.getContext(),LinearLayoutManager.VERTICAL,false);
lstMedicines.setHasFixedSize(false);
lstMedicines.setLayoutManager(layoutManager);
}
}
}
子适配器Class
public class MedicinesInPrescAdapter extends RecyclerView.Adapter<MedicinesInPrescAdapter.MedicineListItemViewHolder>{
List<Modal_Product_List> prescriptionProducts;
public MedicinesInPrescAdapter(List<Modal_Product_List> prescriptionListProd) {
if (prescriptionListProd == null) {
throw new IllegalArgumentException(
"PrescriptionProductList must not be null");
}
this.prescriptionProducts = prescriptionListProd;
}
@Override
public MedicineListItemViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.item_row_medicine_productlist,
viewGroup,
false);
return new MedicineListItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(
MedicineListItemViewHolder viewHolder, int position) {
Modal_Product_List modelMedicine = prescriptionProducts.get(position);
viewHolder.medicineName.setText(modelMedicine.getMedicinename());
viewHolder.medQty.setText(modelMedicine.getQuantity());
viewHolder.days.setText("30");
viewHolder.Amount.setText(modelMedicine.getQuantitybasedprice());
}
@Override
public int getItemCount() {
return prescriptionProducts.size();
}
public final static class MedicineListItemViewHolder
extends RecyclerView.ViewHolder {
TextView medicineName;
EditText medQty;
TextView days;
TextView Amount;
CheckBox selectMe;
public MedicineListItemViewHolder(View itemView) {
super(itemView);
medicineName = (TextView) itemView.findViewById(R.id.medicineName);
medQty = (EditText) itemView.findViewById(R.id.medQty);
days = (TextView) itemView.findViewById(R.id.days);
Amount = (TextView) itemView.findViewById(R.id.amount);
selectMe = (CheckBox) itemView.findViewById(R.id.selectMe);
}
}
}
据我了解,您需要一个带有 RecyclerView 行的 RecyclerView。
在这种情况下,我建议您使用 可扩展的 RecyclerView,在 link.
中使用 this lib. Just follow the expandable example
同一个库中还有许多更酷的功能,例如拖放、可滑动行...观看不到一分钟 example video。
您只需将库添加到 gradle.build
文件中的依赖项中,如下所示:
dependencies {
compile 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.7.4'
}
能够 import
您 java 文件中的库。
前几天遇到这个问题,终于解决了。您所要做的就是 @override 布局管理器 onMeasure 函数,如下所示:
CustomLinearLayoutManager
public class CustomLinearLayoutManager extends LinearLayoutManager {
private static final String TAG = CustomLinearLayoutManager.class.getSimpleName();
public CustomLinearLayoutManager(Context context) {
super(context);
}
public CustomLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
private int[] mMeasuredDimension = new int[2];
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
final int widthMode = View.MeasureSpec.getMode(widthSpec);
final int heightMode = View.MeasureSpec.getMode(heightSpec);
final int widthSize = View.MeasureSpec.getSize(widthSpec);
final int heightSize = View.MeasureSpec.getSize(heightSpec);
int width = 0;
int height = 0;
for (int i = 0; i < getItemCount(); i++) {
measureScrapChild(recycler, i, View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
mMeasuredDimension);
if (getOrientation() == HORIZONTAL) {
width = width + mMeasuredDimension[0];
if (i == 0) {
height = mMeasuredDimension[1];
}
} else {
height = height + mMeasuredDimension[1];
if (i == 0) {
width = mMeasuredDimension[0];
}
}
}
switch (widthMode) {
case View.MeasureSpec.EXACTLY:
width = widthSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
switch (heightMode) {
case View.MeasureSpec.EXACTLY:
height = heightSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
setMeasuredDimension(width, height);
}
private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec,
int heightSpec, int[] measuredDimension) {
try {
View view = recycler.getViewForPosition(0);//fix IndexOutOfBoundsException
if (view != null) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin;
measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin;
recycler.recycleView(view);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
您只需像上面那样复制并粘贴自定义布局管理器,然后像这样在父适配器中设置您的回收视图:
RecyclerView.LayoutManager layoutManager = new CustomLinearLayoutManager(mContext);
holder.childRecyclerView.setLayoutManager(layoutManager);
记住 : 不要使用与父适配器相同的布局管理器,否则会发生错误。
通过 Android 支持库 23.2 的支持库版本 23.2.0。所以所有 WRAP_CONTENT
应该都能正常工作。
请更新 gradle 文件中的库版本。
compile 'com.android.support:recyclerview-v7:23.2.0'
这允许 RecyclerView
根据其内容的大小调整自身的大小。这意味着以前不可用的场景,例如将 WRAP_CONTENT
用于 RecyclerView
的维度,现在是可能的。您会发现所有内置的布局管理器现在都支持自动测量。
您需要致电 setAutoMeasureEnabled(true)
Below is the sample code
RecyclerView.LayoutManager layout = new LinearLayoutManager(context);
layout.setAutoMeasureEnabled(true);
因为 setAutoMeasureEnabled
是不推荐使用的替代解决方案
此方法已在 API 级别 27.1.0 中弃用。 LayoutManager
的实现者应该通过覆盖 isAutoMeasureEnabled()
.
来定义它是否使用 AutoMeasure
请注意:您不应在每次调用 onBindView() 时都创建新的 Adapter,您应该在 onCreateView() 中创建一次。
最好的方法 - 使用任何库,例如 - RendererRecyclerViewAdapter
如何添加 NestedRecyclerView:
第 1 步:将 ViewModel
界面添加到您的 Modal_Product_List
public class Modal_Product_List implements ViewModel {
String getMedicinename() { ... } //your method
int getQuantity() { ... } //your method
int getQuantitybasedprice() { ... } //your method
}
步骤 2: 为 Modal_Product_List
创建一个 ViewBinder
:
private ViewRenderer getModalProductViewRenderer() {
return new ViewBinder<>(
R.layout.item_row_medicine_productlist, //your child layout id
Modal_Product_List.class //your child item class
(model, finder, payloads) -> finder
.setText(R.id.medicineName, model.getMedicinename())
.setText(R.id.medQty, (String) model.getQuantity())
.setText(R.id.amount, (String) model.getQuantitybasedprice())
.setChecked(R.id.selectMe, ...)
);
}
第 3 步: 将 CompositeViewModel
接口添加到 PrescriptionModal
或从 DefaultCompositeModel
扩展:
public class PrescriptionModal extends DefaultCompositeViewModel {
String getPrescriptionID() {...} //your method
String getDoctorType() {...} //your method
String getDoctorName() {...} //your method
String getPatientName() {...} //your method
@Override
List<Modal_Product_List> getItems() { return yourProductItems; }
}
步骤 4: 为 PrescriptionModal
创建一个 ViewBinder
:
private ViewRenderer getModalProductViewRenderer() {
return new CompositeViewBinder<>(
R.layout.item_row_digitised_request, //your parent item layout
R.id.lstAllMedicines, //your nested RecyclerView
PrescriptionModal.class, //your parent item class
(model, finder, payloads) -> finder
//no need to set child items, it will set automatically
.setText(R.id.prescnum, "Prescription:" + model.getPrescriptionID)
.setText(R.id.doctorName, "Doctor:" + model.getDoctorName())
.setText(R.id.doctorType, "Type:" + model.getDoctorType())
.setText(R.id.patientName, "Patient:" + model.getPatientName())
).registerRenderer(getModalProductViewRenderer()); //register ModalProductViewRenderer
.registerRenderer(...) //if you need you can create other renderer and register here
);
第 5 步(可选): 如果您需要自定义 LayoutManager
,则扩展 CompositeViewBinder
并覆盖 createLayoutManager
方法和用它代替 CompositeViewBinder
public class CustomCompositeViewBinder extends CompositeViewBinder {
//...
@Override
protected RecyclerView.LayoutManager createLayoutManager() {
return new MyLinearLayoutManager(getContext(), VERTICAL, false);
}
}
第 6 步:初始化RendererRecyclerViewAdapter
并注册渲染器:
RendererRecyclerViewAdapter adapter = new RendererRecyclerViewAdapter(getContext());
recyclerView.setAdapter(adapter);
adapter.registerRenderer(getModalProductViewRenderer());
adapter.registerRenderer(...); //if you need you can create other renderers
adapter.setItems(getPrescriptionListModal());
添加嵌套 RecyclerView 的方法非常简短
我想添加一些子视图(列表项),它们来自 JSON 格式化数据。每个子列表都在父列表项行下。如何在 RecyclerView
中为每个行项目(具有子列表项目的父项目)填充它?
我曾尝试在 RecyclerView
父行中使用 RecyclerView
(用于填充子列表),但此处子视图不可见。
父适配器Class
public class DigitizedPrescAdapter extends RecyclerView.Adapter<DigitizedPrescAdapter.ListItemViewHolder>{
private List<PrescriptionModal> prescriptionList;
MedicinesInPrescAdapter adapter;
public DigitizedPrescAdapter(List<PrescriptionModal> prescriptionListModal) {
if (prescriptionListModal == null) {
throw new IllegalArgumentException(
"PrescriptionList must not be null");
}
this.prescriptionList = prescriptionListModal;
}
@Override
public ListItemViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.item_row_digitised_request,
viewGroup,
false);
return new ListItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(
ListItemViewHolder viewHolder, int position) {
PrescriptionModal model = prescriptionList.get(position);
viewHolder.prescnum.setText("Prescription "+ ++position);
viewHolder.prescNo.setText("Prescription: "+model.getPrescriptionID());
viewHolder.doctorType.setText("Type: "+model.getDoctorType());
viewHolder.doctorName.setText("Doctor: "+model.getDoctorName());
viewHolder.patientName.setText("Patient: "+model.getPatientName());
adapter = new MedicinesInPrescAdapter(model.getLstproduct());
viewHolder.lstMedicines.setAdapter(adapter);
}
@Override
public int getItemCount() {
return prescriptionList.size();
}
public final static class ListItemViewHolder
extends RecyclerView.ViewHolder {
TextView prescnum;
TextView prescNo;
TextView doctorType;
TextView patientName;
TextView doctorName;
CheckBox selectAll;
RecyclerView lstMedicines;
public ListItemViewHolder(View itemView) {
super(itemView);
prescnum = (TextView) itemView.findViewById(R.id.prescnum);
prescNo = (TextView) itemView.findViewById(R.id.prescNo);
doctorType = (TextView) itemView.findViewById(R.id.doctorType);
patientName = (TextView) itemView.findViewById(R.id.patientName);
doctorName = (TextView) itemView.findViewById(R.id.doctorName);
selectAll = (CheckBox) itemView.findViewById(R.id.selectAll);
lstMedicines = (RecyclerView) itemView.findViewById(R.id.lstAllMedicines);
MyLinearLayoutManager layoutManager = new MyLinearLayoutManager(itemView.getContext(),LinearLayoutManager.VERTICAL,false);
lstMedicines.setHasFixedSize(false);
lstMedicines.setLayoutManager(layoutManager);
}
}
}
子适配器Class
public class MedicinesInPrescAdapter extends RecyclerView.Adapter<MedicinesInPrescAdapter.MedicineListItemViewHolder>{
List<Modal_Product_List> prescriptionProducts;
public MedicinesInPrescAdapter(List<Modal_Product_List> prescriptionListProd) {
if (prescriptionListProd == null) {
throw new IllegalArgumentException(
"PrescriptionProductList must not be null");
}
this.prescriptionProducts = prescriptionListProd;
}
@Override
public MedicineListItemViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.item_row_medicine_productlist,
viewGroup,
false);
return new MedicineListItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(
MedicineListItemViewHolder viewHolder, int position) {
Modal_Product_List modelMedicine = prescriptionProducts.get(position);
viewHolder.medicineName.setText(modelMedicine.getMedicinename());
viewHolder.medQty.setText(modelMedicine.getQuantity());
viewHolder.days.setText("30");
viewHolder.Amount.setText(modelMedicine.getQuantitybasedprice());
}
@Override
public int getItemCount() {
return prescriptionProducts.size();
}
public final static class MedicineListItemViewHolder
extends RecyclerView.ViewHolder {
TextView medicineName;
EditText medQty;
TextView days;
TextView Amount;
CheckBox selectMe;
public MedicineListItemViewHolder(View itemView) {
super(itemView);
medicineName = (TextView) itemView.findViewById(R.id.medicineName);
medQty = (EditText) itemView.findViewById(R.id.medQty);
days = (TextView) itemView.findViewById(R.id.days);
Amount = (TextView) itemView.findViewById(R.id.amount);
selectMe = (CheckBox) itemView.findViewById(R.id.selectMe);
}
}
}
据我了解,您需要一个带有 RecyclerView 行的 RecyclerView。 在这种情况下,我建议您使用 可扩展的 RecyclerView,在 link.
中使用 this lib. Just follow the expandable example同一个库中还有许多更酷的功能,例如拖放、可滑动行...观看不到一分钟 example video。
您只需将库添加到 gradle.build
文件中的依赖项中,如下所示:
dependencies {
compile 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.7.4'
}
能够 import
您 java 文件中的库。
前几天遇到这个问题,终于解决了。您所要做的就是 @override 布局管理器 onMeasure 函数,如下所示:
CustomLinearLayoutManager
public class CustomLinearLayoutManager extends LinearLayoutManager {
private static final String TAG = CustomLinearLayoutManager.class.getSimpleName();
public CustomLinearLayoutManager(Context context) {
super(context);
}
public CustomLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
private int[] mMeasuredDimension = new int[2];
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
final int widthMode = View.MeasureSpec.getMode(widthSpec);
final int heightMode = View.MeasureSpec.getMode(heightSpec);
final int widthSize = View.MeasureSpec.getSize(widthSpec);
final int heightSize = View.MeasureSpec.getSize(heightSpec);
int width = 0;
int height = 0;
for (int i = 0; i < getItemCount(); i++) {
measureScrapChild(recycler, i, View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
mMeasuredDimension);
if (getOrientation() == HORIZONTAL) {
width = width + mMeasuredDimension[0];
if (i == 0) {
height = mMeasuredDimension[1];
}
} else {
height = height + mMeasuredDimension[1];
if (i == 0) {
width = mMeasuredDimension[0];
}
}
}
switch (widthMode) {
case View.MeasureSpec.EXACTLY:
width = widthSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
switch (heightMode) {
case View.MeasureSpec.EXACTLY:
height = heightSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
setMeasuredDimension(width, height);
}
private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec,
int heightSpec, int[] measuredDimension) {
try {
View view = recycler.getViewForPosition(0);//fix IndexOutOfBoundsException
if (view != null) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin;
measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin;
recycler.recycleView(view);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
您只需像上面那样复制并粘贴自定义布局管理器,然后像这样在父适配器中设置您的回收视图:
RecyclerView.LayoutManager layoutManager = new CustomLinearLayoutManager(mContext);
holder.childRecyclerView.setLayoutManager(layoutManager);
记住 : 不要使用与父适配器相同的布局管理器,否则会发生错误。
通过 Android 支持库 23.2 的支持库版本 23.2.0。所以所有 WRAP_CONTENT
应该都能正常工作。
请更新 gradle 文件中的库版本。
compile 'com.android.support:recyclerview-v7:23.2.0'
这允许 RecyclerView
根据其内容的大小调整自身的大小。这意味着以前不可用的场景,例如将 WRAP_CONTENT
用于 RecyclerView
的维度,现在是可能的。您会发现所有内置的布局管理器现在都支持自动测量。
您需要致电 setAutoMeasureEnabled(true)
Below is the sample code
RecyclerView.LayoutManager layout = new LinearLayoutManager(context);
layout.setAutoMeasureEnabled(true);
因为 setAutoMeasureEnabled
是不推荐使用的替代解决方案
此方法已在 API 级别 27.1.0 中弃用。 LayoutManager
的实现者应该通过覆盖 isAutoMeasureEnabled()
.
请注意:您不应在每次调用 onBindView() 时都创建新的 Adapter,您应该在 onCreateView() 中创建一次。
最好的方法 - 使用任何库,例如 - RendererRecyclerViewAdapter
如何添加 NestedRecyclerView:
第 1 步:将 ViewModel
界面添加到您的 Modal_Product_List
public class Modal_Product_List implements ViewModel {
String getMedicinename() { ... } //your method
int getQuantity() { ... } //your method
int getQuantitybasedprice() { ... } //your method
}
步骤 2: 为 Modal_Product_List
创建一个 ViewBinder
:
private ViewRenderer getModalProductViewRenderer() {
return new ViewBinder<>(
R.layout.item_row_medicine_productlist, //your child layout id
Modal_Product_List.class //your child item class
(model, finder, payloads) -> finder
.setText(R.id.medicineName, model.getMedicinename())
.setText(R.id.medQty, (String) model.getQuantity())
.setText(R.id.amount, (String) model.getQuantitybasedprice())
.setChecked(R.id.selectMe, ...)
);
}
第 3 步: 将 CompositeViewModel
接口添加到 PrescriptionModal
或从 DefaultCompositeModel
扩展:
public class PrescriptionModal extends DefaultCompositeViewModel {
String getPrescriptionID() {...} //your method
String getDoctorType() {...} //your method
String getDoctorName() {...} //your method
String getPatientName() {...} //your method
@Override
List<Modal_Product_List> getItems() { return yourProductItems; }
}
步骤 4: 为 PrescriptionModal
创建一个 ViewBinder
:
private ViewRenderer getModalProductViewRenderer() {
return new CompositeViewBinder<>(
R.layout.item_row_digitised_request, //your parent item layout
R.id.lstAllMedicines, //your nested RecyclerView
PrescriptionModal.class, //your parent item class
(model, finder, payloads) -> finder
//no need to set child items, it will set automatically
.setText(R.id.prescnum, "Prescription:" + model.getPrescriptionID)
.setText(R.id.doctorName, "Doctor:" + model.getDoctorName())
.setText(R.id.doctorType, "Type:" + model.getDoctorType())
.setText(R.id.patientName, "Patient:" + model.getPatientName())
).registerRenderer(getModalProductViewRenderer()); //register ModalProductViewRenderer
.registerRenderer(...) //if you need you can create other renderer and register here
);
第 5 步(可选): 如果您需要自定义 LayoutManager
,则扩展 CompositeViewBinder
并覆盖 createLayoutManager
方法和用它代替 CompositeViewBinder
public class CustomCompositeViewBinder extends CompositeViewBinder {
//...
@Override
protected RecyclerView.LayoutManager createLayoutManager() {
return new MyLinearLayoutManager(getContext(), VERTICAL, false);
}
}
第 6 步:初始化RendererRecyclerViewAdapter
并注册渲染器:
RendererRecyclerViewAdapter adapter = new RendererRecyclerViewAdapter(getContext());
recyclerView.setAdapter(adapter);
adapter.registerRenderer(getModalProductViewRenderer());
adapter.registerRenderer(...); //if you need you can create other renderers
adapter.setItems(getPrescriptionListModal());
添加嵌套 RecyclerView 的方法非常简短