安卓使用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));
相关推荐
用户214118326360213 分钟前
dify案例分享-Dify+RSS 聚合 8 大平台实时热点,新闻获取效率飙升 300%
前端
百锦再15 分钟前
Razor编程中@Html的方法使用大全
前端·html
啪叽18 分钟前
JavaScript可选链操作符(?.)的实用指南
前端·javascript
Ian在掘金18 分钟前
bat+python实现easy connect自动连接
前端·python
代码搬运媛21 分钟前
【react实战】如何实现监听窗口大小变化
前端·javascript·react.js
小桥风满袖23 分钟前
Three.js-硬要自学系列30之专项学习环境光
前端·css·three.js
Luckyfif26 分钟前
🤯由 性能指标 散发开来的 Performance API 被问爆了呀
前端·面试·性能优化
咸虾米29 分钟前
在uniCloud云对象内使用unipay的微信退款出现错误“uniPayCo.refund Error: token校验未通过”的解决方案
前端·后端
前端Hardy35 分钟前
HTML&CSS:产品卡片动画效果
前端·javascript
货拉拉技术41 分钟前
货拉拉开源:鸿蒙路由 TheRouter
android·前端·harmonyos