1.添加依赖
implementation ‘androidx.recyclerview:recyclerview:1.2.0-alpha01’
2.建立一个适配器
public class RecyclerBaseAdapter extends RecyclerView.Adapter<RecyclerBaseAdapter.InnerHolder> {
List<String> mData;
public RecyclerBaseAdapter(List<String> listData) {
this.mData=listData;
}
@NonNull
@Override
public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//View view = View.inflate(parent.getContext(), R.layout.recyclerview_item, null);//出现的问题向后看
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item,parent,false);
return new InnerHolder(view);
}
@Override
public void onBindViewHolder(@NonNull InnerHolder holder, int position) {
holder.tvItem.setText(mData.get(position));
}
@Override
public int getItemCount() {
if (mData != null) {
return mData.size();
}
return 0;
}
public class InnerHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tv_item)
TextView tvItem;
public InnerHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
3.在Activity中使用
RecyclerBaseAdapter mBaseAdapter = new RecyclerBaseAdapter(mlist);
//实现ListView 的效果
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerview.setLayoutManager(layoutManager);
//实现GridView 的效果
/*GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
gridLayoutManager.setOrientation(RecyclerView.HORIZONTAL);*/
//实现瀑布流
/* StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,RecyclerView.VERTICAL );
layoutManager.setReverseLayout(true);*/
recyclerview.setLayoutManager(layoutManager);
recyclerview.setAdapter(mBaseAdapter);
4.出现的问题
a.图片就能说明问题了
关于LayoutInflater的讲解相关链接LayoutInflater
b.和RecyclerView没关系,但是是做这个例子出现的问题,项目中用了Butterknife
依赖需要注意下
implementation ‘com.jakewharton:butterknife:10.2.1’
annotationProcessor ‘com.jakewharton:butterknife-compiler:10.2.1’
不然会空指针异常