系列文章:
一、概述
RecyclerView
是官方在5.0之后新添加的控件,推出用来替代传统的ListView
和GridView
列表控件。
二、使用步骤
(一)添加依赖
implementation 'androidx.recyclerview:recyclerview:1.1.0'
(二)添加RecycleView
(1)activity_main中
(2)初始化
(3) setLayoutManager()
listRv.setLayoutManager(new LinearLayoutManager(this));
RecyclerView
提供了三种布局管理器即:
- LinearLayoutManager 线性布局管理器(横向/竖向滚动)
- GridLayoutManager 网格布局管理器(一行显示多个)
- StaggeredGridLayoutManager 瀑布流布局管理器
(三)RecyclerView的“每个item”的布局
(四)添加Adapter适配器
(一)添加MyAdapter和viewHolder类
(二)重写3个方法
onCreateViewHolder() 创建viewHolder | 1.加载布局传入ViewHolder并返回 |
参数viewType:和getItemViewType()根据不同数据返回对应布局,如设置Header | |
onBindViewHolder() 绑定viewHolder | 将控件和数据进行绑定 |
getItemCount() | 返回多少条 |
【本步骤代码】
class MyAdapter extends RecyclerView.Adapter<MyAdapter.viewHolder>{
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
}
@Override
public int getItemCount() {
return name.length;//有改动
}
class viewHolder extends RecyclerView.ViewHolder{
public viewHolder(@NonNull View itemView) {
super(itemView);
}
}
}
(三)item对应RecycleView
(1)加载布局
(2)获取控件
(3)设置数据
(五)关联RecycleView和Adapter
【写在最后|本次所用模拟数据】
//图片 private int image[] = {R.drawable.apple,R.drawable.banana, R.drawable.litchi,R.drawable.pear, R.drawable.pineapple,R.drawable.watermelon}; //名称 private String name[] ={"苹果","香蕉","荔枝","梨","菠萝","西瓜"}; //描述 private String description[] = { "苹果可促进肠胃蠕动,协助人体排出废物,使皮肤红润有光泽", "香蕉可治高血压,能促进肠胃蠕动,可治疗便秘", "荔枝可改善失眠、健忘、多梦等症,并能促进皮肤新陈代谢,延缓衰老", "梨生吃能解除因上呼吸道感染所产生的咽喉干燥痒痛、干咳及烦渴、潮热等阴虚之症", "菠萝可用于治疗夏日暑泻、消化不良以及胃脘胀痛的病症", "西瓜具有清热利尿、解暑生津的功效,", };
【写在最后|本次涉及文件】
【写在最后|item布局代码】
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:id="@+id/iv_image"
android:layout_width="170dp"
android:layout_height="150dp"
android:layout_margin="10dp"
android:src="@drawable/apple"
android:scaleType="fitXY"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="苹果"
android:textStyle="bold"
android:textSize="22sp"
/>
<TextView
android:id="@+id/tv_description"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tv_name"
android:layout_marginTop="-1dp"
android:text=" 苹果可促进肠胃蠕动,协助人体排出废物,使皮肤红润有光泽"
android:textSize="20sp" />
</RelativeLayout>
</LinearLayout>