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’
不然會空指針異常