使用布局管理器时,RecyclerView运行时错误?

时间:2018-03-11 20:36:02

标签: android android-recyclerview recycler-adapter

我有回收器视图适配器的代码

public class RvAdapter  extends RecyclerView.Adapter<RvAdapter.CardHolder> {
@Override
public CardHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item,parent,false);
    return new CardHolder(v);
}

@Override
public void onBindViewHolder(CardHolder holder, int position) {

}

@Override
public int getItemCount() {
    return 10;
}

public class CardHolder extends RecyclerView.ViewHolder {
    ImageView bg;
    public CardHolder(View itemView) {
        super(itemView);
        bg=(ImageView)itemView.findViewById(R.id.rvItemImage);
    }
}

}

和MainActivity

// the recycle view
    rv=(RecyclerView)findViewById(R.id.mainBgRv);
    adapter=new RvAdapter();
    RecyclerView.LayoutManager linearLayoutManager=new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,false);
    try{
        rv.setLayoutManager(linearLayoutManager);
        rv.setAdapter(adapter);

    }catch (Exception e){
        Log.i("ERROR_TAG",e.toString());
    }
    //

当我使用布局管理器时,应用停止并且不会抛出任何异常...... 当我删除它只是没有显示rv

中的任何项目

1 个答案:

答案 0 :(得分:0)

你的适配器没有做任何应该做的事情。在这里看到这篇文章:

Simple Android RecyclerView example 在哪里可以找到适配器的示例。

问题是你必须传递Adapter内部的项目列表,并且在onBindViewHolder方法中你必须运行一个代码,这将为ViewHolder填充数据。

换句话说 - RecyclerViewAdapter有两个角色 - 它创建项目视图(ViewHolder模式)并根据需要用数据填充它们。

你忘记了第二件事。