如何使用 Firebase 在 Android 中创建动态水平 RecyclerView?
RecyclerView 是一款强大的 Android 开发工具,可以高效地组织和显示海量数据库。开发者可以将 RecyclerView 和 Firebase Firestore 结合使用,构建具有实时数据更新的动态水平列表。在本博客中,我们将介绍四种使用 Java 实现此功能的不同方法。
使用的方法
将 RecyclerView 与 FirestoreRecyclerAdapter 结合使用
将 SnapHelper 与 RecyclerView 和 Firestore 结合使用
将 ViewPager2 与 Firestore 结合使用
将 FirestoreRecyclerAdapter 与 LinearLayoutManager 结合使用
将 RecyclerView 与 FirestoreRecyclerAdapter 结合使用
第一种方法使用了 FirebaseUI 框架提供的 FirestoreRecyclerAdapter。此连接器通过处理自动实时数据更改,使 Firestore 与 RecyclerView 的集成更加轻松。
算法
算法的第一步是设置 Firebase Firestore 数据库并包含任务的基本依赖项。
开发一个用于显示 Firestore 集合数据对象的模型类。
创建一个名为 ViewHolder 的类,用于保存 RecyclerView 中每个组件的视图。
进行必要的修改后,在 FirestoreRecyclerAdapter 中替换必要的方法。
为 RecyclerView 创建一个连接器,并在流程结构文档中对其进行配置。
示例
public class MyAdapter extends FirestoreRecyclerAdapter<Item, MyAdapter.ViewHolder> {
public MyAdapter(@NonNull FirestoreRecyclerOptions<Item> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Item model) {
// 将数据绑定到视图
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// 扩大项目布局并创建 ViewHolder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
// 声明视图并在构造函数中绑定它们
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
// 初始化视图
textView = itemView.findViewById(R.id.textView);
}
}
}
// Firestore 查询
Query query = FirebaseFirestore.getInstance().collection("items");
// FirestoreRecyclerOptions
FirestoreRecyclerOptions<Item> options = new FirestoreRecyclerOptions.Builder<Item>()
.setQuery(query, Item.class)
.build();
// 创建适配器
MyAdapter adapter = new MyAdapter(options);
// RecyclerView 设置
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
recyclerView.setAdapter(adapter);
// 开始监听 Firestore 数据
adapter.startListening();
输出

将 SnapHelper 与 RecyclerView 和 Firestore 结合使用
第二种技术是使用 Android 支持库提供的 SnapHelper 类创建动态水平 RecyclerView。使用 SnapHelper 可以将对象捕捉到特定位置,以获得更好的滚动体验。
算法
首先,设置 Firebase Firestore 数据库并包含项目的基本依赖项。
开发一个模型类来表示 Firestore 集合的数据对象。
要存储 RecyclerView 中每个项目的意见,请开发一个名为 ViewHolder 的类。
在 Activity 布局文件中配置 LinearSnapHelper 和 RecyclerView。
构建一个超越 RecyclerView 的专用适配器。数据使用适配器和 Firestore 填充。
示例
// 查找并设置 RecyclerView
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
// 附加 LinearSnapHelper 用于捕捉行为
LinearSnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
// Firestore 查询
Query query = FirebaseFirestore.getInstance().collection("items");
// FirestoreRecyclerOptions
FirestoreRecyclerOptions<Item> options = new FirestoreRecyclerOptions.Builder<Item>()
.setQuery(query, Item.class)
.build();
// 创建适配器
MyAdapter adapter = new MyAdapter(options);
// 将适配器设置为 RecyclerView
recyclerView.setAdapter(adapter);
// 开始监听 Firestore 数据
adapter.startListening();
输出

将 ViewPager2 与 Firestore 结合使用
第三种技术利用了 ViewPager2,这是 ViewPager 的一个较新版本,现已弃用。 ViewPager2 可以使用 Firestore 数据构建动态水平 RecyclerView,因为它支持在各个部分或视图之间水平滑动。
算法
首先,设置 Firebase Firestore 数据库并包含项目的基本依赖项。
实现一个用于显示 Firestore 集合数据对象的模型类。
为了演示 ViewPager2 中的每个项目,请创建一个 Fragment 或 View 类。
配置 Activity 布局文件的 ViewPager2 对象。
开发一个唯一的转换器,用于管理扩展 FragmentStateAdapter 的视图或部分的开发。
示例
// 查找并设置 ViewPager2
ViewPager2 viewPager = findViewById(R.id.viewPager);
// 创建适配器
MyAdapter adapter = new MyAdapter(this);
// 将适配器设置为 ViewPager2
viewPager.setAdapter(adapter);
// Firestore 查询
Query query = FirebaseFirestore.getInstance().collection("items");
// FirestoreRecyclerOptions
FirestoreRecyclerOptions<Item> options = new FirestoreRecyclerOptions.Builder<Item>()
.setQuery(query, Item.class)
.build();
// 设置选项并开始监听 Firestore 数据
adapter.setOptions(options);
adapter.startListening();
输出

将 FirestoreRecyclerAdapter 与 LinearLayoutManager 结合使用
第四种技术需要使用 LinearLayoutManager 和 FirestoreRecyclerAdapter 在 Android 中构建动态水平 RecyclerView。 Firebase Firestore 库的 FirestoreRecyclerAdapter 是一个强大的适配器,可以更轻松地将 Firestore 数据链接到 RecyclerView。
算法
将关键需求添加到 Android 应用程序,然后创建 Firebase。
开发一个模型类来保存将在 RecyclerView 中显示的所有元素的信息。
要描述从 Firebase Firestore 获取数据的查询,请配置 FirestoreRecyclerOptions。
使用唯一的 ViewHolder 类扩展 RecyclerView。每个项目的视图都绑定到一个 ViewHolder。
创建一个不同于 FirestoreRecyclerAdapter 的转换器类来处理数据绑定和获取。
创建 RecyclerView,以便在流程布局文档中以水平方向使用 LinearLayoutManager。
创建一个自定义适配器示例,然后将其链接到 RecyclerView。
示例
public class MyAdapter extends FirestoreRecyclerAdapter<Item, MyAdapter.ViewHolder> {
public MyAdapter(@NonNull FirestoreRecyclerOptions<Item> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Item model) {
// 将数据绑定到 ViewHolder 中的视图
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// 扩大项目布局并创建 ViewHolder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
public class ViewHolder extends RecyclerView.ViewHolder {
// 声明视图并在构造函数中绑定它们
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
// 初始化视图
textView = itemView.findViewById(R.id.textView);
}
}
}
// 查找并设置 RecyclerView
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
// Firestore 实例
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
// FirestoreRecyclerOptions
FirestoreRecyclerOptions<Item> options = new FirestoreRecyclerOptions.Builder<Item>()
.setQuery(firestore.collection("items"), Item.class)
.build();
// 创建适配器
MyAdapter adapter = new MyAdapter(options);
// 将适配器设置为 RecyclerView
recyclerView.setAdapter(adapter);
// 开始监听 Firestore 数据
adapter.startListening();
输出

结论
在本文中,我们探讨了使用 Firebase Firestore 在 Android 上构建动态水平 RecyclerView 的四种方法。每种方法都有其优点,并且可以根据特定的项目需求进行修改。程序员可以利用 RecyclerView 和 Firestore 创建响应迅速且直观的用户界面,以显示实时数据。选择最符合您项目需求的方法,然后添加动态水平列表来改进您的应用。

