Android学习|布局列表——RecyclerView
一、前提
RecyclerView效果和 ListView 效果接近,只是RecyclerView更灵活,效果更多。
RecyclerView需要先导入依赖包才能进行使用,类似导入jar
导包:src下面的 bulid.gradle中添加
dependencies { implementation
‘androidx.recyclerview:recyclerview:1.1.0’
}
原项目有导包过程,所以只添加 implementation ‘androidx.recyclerview:recyclerview:1.1.0’
第一个大象点击下载包
二、实现RecyclerView效果
RecyclerView设置与ListView基本相同,但是在Myadapter和布局管理器方面有些不同。
1、自定义的MyAdapter类
RecyclerView 的自定义Adapter继承 RecyclerView.Adapter <VH extends ViewHolder》
VH 是内部类,继承 ViewHolder,类似ListView里边封装的保存Item里边组件的内部类,并且也避免了像ListView没设置的话,重复的进行findViewById()
package com.example.senconddemo_recyclerview;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
/*RecyclerView的自定义Adapter继承 RecyclerView.Adapter<VH extends ViewHolder>
VH 个内部类,继承 ViewHolder,类似ListView里边封装的保存Item里边组件的内部类,并且也避免了像ListView没设置的话,重复的进行findViewById()
* */
public class MyAdapater extends RecyclerView.Adapter<MyAdapater.MyViewHolder> {
private List<Bean> data;
private Context context;
public MyAdapater(List<Bean> data, Context context) {
this.data = data;
this.context = context;
}
//创建MyViewHolder的方法
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//首先拿到自定义的布局
View view = View.inflate(context, R.layout.recyclerview_item, null);
return new MyViewHolder(view);
}
//给布局里面的组件进行数据的绑定 参数的holder,就是当前的内部类,里面包含组件,进行赋值 positionw为i,即第几个
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv.setText(data.get(position).getName());
}
@Override
public int getItemCount() {
return data==null? 0 :data.size();
}
//根据Adatper的继承泛型,可以看出 内部类继承 RecyclerView.ViewHolder
public class MyViewHolder extends RecyclerView