如何将数据从recyclerView传递到适配器以进行动态布局

时间:2018-11-12 11:11:57

标签: android android-studio android-fragments android-recyclerview recycler-adapter

我正在制作具有多种布局的动态recyclerView。我做了三到四个布局,应该根据样式类型id动态更改。现在,我在recyclerview中获得样式ID,以及如何将此值传递给适配器。

这是我的快照 here is my snapshot

这是我正在获取样式类型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对象传递到适配器运行时

2 个答案:

答案 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;
    }