安卓使用RecyclerView渲染组件

RecyclerView 是 Android 中用于显示大量数据集合的高性能列表控件

1.安装依赖

arduino 复制代码
implementation 'androidx.recyclerview:recyclerview:1.2.1'

2.定义渲染容器xml

xml 复制代码
<!-- activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

3.定义列表项布局

xml 复制代码
<!-- list_item_layout.xml -->
<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"/>

4.创建ViewHolder

用于获取列表项的一些具体组件,方便后期直接通过这个ViewHolder能够直接选中指定的一些TextView,Button,ImageView等等

scala 复制代码
    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }

5.创建适配器

创建一个继承自 RecyclerView.Adapter 的适配器类,用于管理数据和绑定数据到视图,将刚刚创建的ViewHolder通过泛型传进去,构造器接收外部传入的数据

scala 复制代码
public class MyAdapter extends RecyclerView.Adapter<ViewHolder> {

    private List<String> dataList;

    public MyAdapter(List<String> dataList) {
        this.dataList = dataList;
    }

}

6.实现父类的三个方法alt+enter快捷键,详细带

less 复制代码
@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 0;
}

7.实现onCreateViewHolder方法

刚刚第4步的时候是预设了一个创建好的ViewHolder,这个方法主要是创建一个真实的ViewHolder,主要是利用LayoutInflater.from创建一个布局,最后将这个布局塞到ViewHolder里面使用,和第4步融合

less 复制代码
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,null,false);

    return new ViewHolder(view);
}

8.实现onBindViewHolder

这个方法主要是为了绑定用户数据到视图上,结合第4,7步,达到闭环

less 复制代码
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.textView.setText(datalist.get(position));
}

9.实现getItemCount方法

csharp 复制代码
@Override
public int getItemCount() {
    return datalist.size();
}

10.activity使用

主要是选中第1步的容器,设置一个布局管理,然后将预制的动态数据放进刚刚的适配器中,传给recycler的方法。

ini 复制代码
RecyclerView recyclerview = findViewById(R.id.recyclerView);
recyclerview.setLayoutManager(new LinearLayoutManager(this));
List<String> stringList = Arrays.asList("Item 1", "Item 2", "Item 3");
recyclerview.setAdapter(new MyAdater(stringList));
相关推荐
mCell1 天前
GSAP ScrollTrigger 详解
前端·javascript·动效
gnip1 天前
Node.js 子进程:child_process
前端·javascript
excel1 天前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel1 天前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼1 天前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping1 天前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙1 天前
[译] Composition in CSS
前端·css
白水清风1 天前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix1 天前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts
用户22152044278001 天前
new、原型和原型链浅析
前端·javascript