相关视频:尚硅谷Android视频《RecyclerView》
相关文章:【进阶】RecyclerView源码解析(一)——绘制流程
一、简介
RecycleView是Listview和GridView的替代者,在support-v7版本中提供支持。
RecycleView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同的LayoutManager,ItemDecoration,ItemAnimator实现令人炫目的效果。
Listview和GridView能做的RecycleView都能做,并且能实现瀑布流效果。
二、使用
1、关联:implementation 'com.android.support:recyclerview-v7:27.1.1'
2、在布局文件中加入recyclerview
3、设置Adapter。注意:继承RecyclerView.Adapter<RvAdapter1.ViewHolder1>,需要自己写一个viewholder。
//设置RecyclerView的适配器
mAdapter = new RvAdapter1(this, datas);
recyclerView.setAdapter(mAdapter);
public class RvAdapter1 extends RecyclerView.Adapter<RvAdapter1.ViewHolder1> {
private final Context context;
private ArrayList<String> datas;
public RvAdapter1(Context context, ArrayList<String> datas) {
this.context = context;
this.datas = datas;
}
/**
* 类似于 getView() 创建View 和 ViewHolder
*/
@NonNull
@Override
public ViewHolder1 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = View.inflate(context, R.layout.item_rv1, null);
return new ViewHolder1(itemView);
}
/**
* 类似于 getView()绑定数据部分的代码
* 数据和 View 绑定
*/
@Override
public void onBindViewHolder(@NonNull ViewHolder1 holder, int position) {
//根据位置得到对应的数据
String data = datas.get(position);
holder.tvTitle.setText(data);
}
/**
* 类似于 getCount()
*/
@Override
public int getItemCount() {
return datas.size();
}
class ViewHolder1 extends RecyclerView.ViewHolder {
private ImageView ivCoin;
private TextView tvTitle;
public ViewHolder1(View itemView) {
super(itemView);
ivCoin = itemView.findViewById(R.id.iv_coin);
tvTitle = itemView.findViewById(R.id.tv_title);
}
}
}
4、设置LayoutManager,setLayoutManager
/**
* LayoutManager 不写LayoutManager 是不会显示的,该段代码用于设置显示方式:list、grid还
是flow
* new LinearLayoutManager() 设置为list格式
*/
recyclerView.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.HORIZONTAL, false));