安卓使用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));
相关推荐
带着梦想扬帆启航2 分钟前
UniApp 多个异步开关控制教程
前端·javascript·uni-app
小高00710 分钟前
JavaScript 内存管理是如何工作的?
前端·javascript
是大林的林吖17 分钟前
解决 elementui el-cascader组件懒加载时存在选中状态丢失的问题?
前端·javascript·elementui
鹏仔工作室17 分钟前
elemetui中el-date-picker限制开始结束日期只能选择当月
前端·vue.js·elementui
一 乐19 分钟前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
sTone8737528 分钟前
Android Room部件协同使用
android·前端
晴殇i33 分钟前
前端代码规范体系建设与团队落地实践
前端·javascript·面试
用户740546399430933 分钟前
Vite 库模式输出 ESM 格式时的依赖处理方案
前端·vite
开发者小天41 分钟前
React中使用useParams
前端·javascript·react.js
lichong9511 小时前
Android studio release 包打包配置 build.gradle
android·前端·ide·flutter·android studio·大前端·大前端++