如何使用 Firebase 在 Android 中创建动态水平 RecyclerView?

androidapps/applicationsmobile development

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 创建响应迅速且直观的用户界面,以显示实时数据。选择最符合您项目需求的方法,然后添加动态水平列表来改进您的应用。


相关文章