我正在制作具有多种布局的动态recyclerView。我做了三到四个布局,应该根据样式类型id动态更改。现在,我在recyclerview中获得样式ID,以及如何将此值传递给适配器。
这是我的快照
这是我正在获取样式类型ID的代码表:
int StyleTypeId = object.getInt("StyleTypeID");
这是我的适配器代码:
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = null;
if (viewType == 1) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_electronic_category, parent, false);
}else if (viewType == 2){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_latest_product, parent, false);
}
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
if (holder.getItemViewType() == 1){
holder.setData(products.get(position));
}else if (holder.getItemViewType() == 2) {
holder.setLatestProductData(products.get(position));
}
}
@Override
public int getItemViewType(int position) {
return 2;
}
我的问题是如何将样式类型ID从JSON对象传递到适配器运行时
答案 0 :(得分:0)
像这样创建适配器
int StyleTypeId = object.getInt("StyleTypeID");
YourAdapter adapter = new YourAdapter(StyleTypeId);
然后在适配器中
class YourAdapter extends RecyclerView.Adapter<YourViewHolder> {
private int styledId;
YourAdapter(int styleId) { this.styleId = styleId; }
}
,在onCreateViewHolder()中,您可以使用styleId创建适当的视图。
答案 1 :(得分:0)
int StyleTypeId = object.getInt("StyleTypeID");
X adapter = new X(StyleTypeId);
然后,您的适配器类添加以下代码段:
private int viewType;
X(int styleId) { this.viewType = styleId; }
在getItemViewType方法中,返回您的视图类型,而不是静态变量
@Override
public int getItemViewType(int position) {
return viewType;
}