RecyclerVier简介
RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。
添加RecyclerView 依赖库
implementation 'androidx.recyclerview:recyclerview:1.0.0'
RecyclerView的配置
布局配置
//线性布局(Context context, @RecyclerView.Orientation int orientation,
boolean reverseLayout)
// 参数:上下环境,水平方向,布局是否翻转
mLinearLayoutManager= new LinearLayoutManager(mContext, RecyclerView.HORIZONTAL,false);
//瀑布流(int spanCount, int orientation)
//参数:一行4列和垂直方向
mStaggeredGridLayoutManager= new StaggeredGridLayoutManager(4, RecyclerView.VERTICAL);
//网格布局(Context context, int spanCount)
//参数:上下环境和一行4列
mGridLayoutManager= new GridLayoutManager(this, 4); //一行4列
//需要设置LayoutManager之后才能显示
mRecyclerView.setLayoutManager(mGridLayoutManager);
mRecyclerView.setAdapter(fruitAdapter);
Adapter定义
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
private Context mContext;
private String[] fruitName;
public FruitAdapter(Context context, String[] fruits) {
this.mContext = context;
this.fruitName = fruits;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_fruit, null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvName.setText(fruitName[position]);
}
@Override
public int getItemCount() {
if (null != fruitName) {
return fruitName.length;
}
return 0;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView tvName;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.fruit_name);
}
}
}
