为了账号安全,请及时绑定邮箱和手机立即绑定

将数据传递给 RecyclerView 适配器

将数据传递给 RecyclerView 适配器

江户川乱折腾 2021-06-07 17:24:08
我调用了改造,响应的大小就是我想作为 RecyclerView 适配器的主要数据集传递的。我可以确认我已成功调用 Retrofit。我很好奇如何将数据集的大小传递给 MyAdapter 类。下面是我的代码:在我的主要活动中:call.enqueue(new Callback<List<Recipe>>() {        @Override        public void onResponse(Call<List<Recipe>> call, Response<List<Recipe>> response) {            Log.v("TAG", String.valueOf(response.isSuccessful()));            mRecipeListResponse = response.body();            for (Recipe recipe : mRecipeListResponse){                Log.v("ID", recipe.getId().toString());            }            mAdapter.setDataSet(mRecipeListResponse);            mRecipeList.setAdapter(mAdapter);  ;            }        @Override        public void onFailure(Call<List<Recipe>> call, Throwable t) {            Log.v("TAG", t.getMessage());        }    });我的适配器:public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {private List<Recipe> mRecipeDataSet;public class ViewHolder extends RecyclerView.ViewHolder{    protected CardView mCardView;    protected TextView mTextView;    public ViewHolder(View itemView) {        super(itemView);        mCardView = itemView.findViewById(R.id.recipe_cardview);        mTextView = itemView.findViewById(R.id.id_of_recipe_item);    }}@NonNull@Overridepublic MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recipe_item, parent,false);    return new ViewHolder(v);}@Overridepublic void onBindViewHolder(@NonNull MyAdapter.ViewHolder holder, int position) {        String id = mRecipeDataSet.get(position).getId();        holder.mTextView.setText(id);}@Overridepublic int getItemCount() {    return mRecipeDataSet.size();}public List<Recipe> setDataSet(List<Recipe> recipeList){    return mRecipeDataSet;}public List<Recipe> getmRecipeDataSet() {    return mRecipeDataSet;}}
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

我的猜测是你MyAdapter用 null启动mRecipeDataSet。试试下面的代码。


private List<Recipe> mRecipeDataSet = new ArrayList<Recipe>();

并替换您的代码


//this is wrong, it doesn't do the right thing as the function name suggests.

public List<Recipe> setDataSet(List<Recipe> recipeList){

    return mRecipeDataSet;

}


public void setDataSet(List<Recipe> recipeList){

    mRecipeDataSet = recipeList;

}


查看完整回答
反对 回复 2021-06-10
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信