RecyclerView迟来的介绍?

本文详细介绍了RecyclerView的特点及使用方法,包括布局管理器的配置、操作动画的设置以及Adapter的封装改进等,帮助开发者更高效地实现列表展示。

其实RecyclerView 出来好久了,当然也使用了好久,但一直拖到今天才写这篇文章。不是因为之前项目忙,就是忘记了,反正肯定不是因为懒。

从Android 5.0诞生之初,RecyclerView 的横空出世就直接威胁到了Listview 在众多程序员心中的地位。

至于原因,且听我慢慢道来。


程序员追求的是什么呀,用简洁的代码搞定难搞的功能嘛,所以。

1).为每个条目位置提供了布局管理器RecyclerView.setLayoutManager

可以用LinearLayoutManager 来设置垂直或水平滚动的列表项

可以用GridLayoutManager来设置网格中的item条目

可以用StaggerdGridLayoutManager来设置交错的网格item条目

你也可以继承RecylerView.LayoutManager类来自定义自己的布局管理器

例如


是不是感觉一键操作很爽呢,别急,在看后面。

2)它还贴心的为每个条目设置了操作动画(RecyclerView.setItemAnimator

他主要用于设置 item移除、添加、更新时的动画。其实你没设置时会发现Android还是会有默认的动画,查看源码你会发现,当然如你想的那样,Google爸爸帮我们封装了一个SimpleItemAnimator类,这里不做详细研究。


其他的,和ListView使用方法类似,依赖Adapter 。说到adapter:

3)RecyclerView.Adapter比BaseAdapter做了更好的封装;

它提供了onCreateViewHolder方法和onBindViewHolder方法,强制你去创建ViewHolder,这样就可以避免初学者写出性能不佳的代码啦。

当然,他还为大家提供了具体的删除、添加、更新item的方法。大家可以具体看代码。

以上。

小朋友和小朋友的妈妈都喜欢看~



















### 如何在 Android RecyclerView 中动态添加数据 #### 创建 Adapter 和 ViewHolder 类 为了实现动态更新 `RecyclerView` 的数据,首先需要定义一个继承自 `RecyclerView.Adapter` 的适配器类。该适配器负责管理视图持有者 (`ViewHolder`) 并填充每一项的数据。 ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> dataList; static class MyViewHolder extends RecyclerView.ViewHolder { TextView textView; MyViewHolder(View view) { super(view); textView = (TextView) view.findViewById(R.id.text_view); } } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { String item = dataList.get(position); holder.textView.setText(item); } @Override public int getItemCount() { return dataList.size(); } // 构造函数接收初始数据列表 public MyAdapter(List<String> initialData) { this.dataList = initialData != null ? initialData : new ArrayList<>(); } // 提供公共方法向现有数据集中添加新条目 public void addItems(List<String> newData) { if (newData == null || newData.isEmpty()) return; int startPosition = dataList.size(); // 获取插入位置 dataList.addAll(newData); // 将新的项目追加到原始列表 notifyItemRangeInserted(startPosition, newData.size()); // 更新UI通知变化范围 } } ``` 上述代码展示了如何创建一个简单的适配器以及如何通过调用 `addItems()` 方法来安全地向现有的数据源中添加更多元素[^4]。 #### 初始化 RecyclerView 及其 LayoutManager 确保已经在布局文件中声明了一个名为 `recyclerView` 的 `androidx.recyclerview.widget.RecyclerView` 控件,并为其设置了合适的 ID 属性以便于后续操作: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" ... /> ``` 接着,在 Activity 或 Fragment 中获取这个控件实例并配置它的基本属性: ```java // 找到RecyclerView组件 RecyclerView recyclerView = findViewById(R.id.recyclerView); // 设置线性布局管理器(也可以选择其他类型的LayoutManager) recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 实例化MyAdapter对象并将一些初始数据传递给它 myAdapter = new MyAdapter(initialDataSet); // 把adapter关联到RecyclerViewrecyclerView.setAdapter(myAdapter); ``` 这段代码片段说明了如何初始化 `RecyclerView` 并设置好所需的 `LayoutManager` 和 `Adapter`[^1]。 #### 动态添加数据至 RecyclerView 当应用程序逻辑允许时,可以通过调用之前提到过的 `addItems()` 函数轻松地往已有的数据集里增加额外的信息。例如在一个按钮点击事件处理器内执行如下动作即可完成新增记录的操作: ```java Button addButton = findViewById(R.id.addButton); addButton.setOnClickListener(v -> { List<String> additionalItems = getNewDataFromSomewhere(); myAdapter.addItems(additionalItems); }); ``` 这里假设有一个叫作 `getNewDataFromSomewhere()` 的辅助函数能够返回一批待加入的新字符串数组。每当触发此按钮按下行为之后,这些新鲜出炉的内容就会被顺利地附加到了显示队列末端[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值