如何更新 Firebase UI 回收器视图适配器的查询?

How to Update Query for Firebase UI recycler view adapter?

我正在使用 Firebase UI 在 Firestore 的回收视图中显示数据。目前我正在设置查询并在开始时将其传递给回收站视图一次。现在我想应用一些需要更改查询的过滤器。我查看了官方文档,但找不到类似的东西。我已经关注了这个 https://github.com/firebase/FirebaseUI-Android/blob/master/firestore/README.md

这是到目前为止所做的

 val query = db.collection("items")
        .whereEqualTo("inStock",true)
        .limit(10)

    val options = FirestoreRecyclerOptions.Builder<ItemModel>()
        .setQuery(query, ItemModel::class.java)
        .setLifecycleOwner(this)
        .build()

    val adapter = FirestoreQuoteAdapter(options)
    recyclerView.adapter = adapter
    recyclerView.layoutManager = LinearLayoutManager(this@MainActivity)

基于用户交互,我想将 Query 更改为类似这样的内容,以便根据新查询过滤我的 recylcer 视图。

val query = db.collection("items")
        .whereEqualTo("inStock",false)
        .limit(10)

有人可以指导我吗?

您将必须完全按照您现在已经在做的事情做:

  1. 创建一个新的查询对象
  2. 将其提供给 FirestoreRecyclerAdapter 的新实例
  3. 将适配器添加到 recyclerview

您不能替换现有适配器内的查询 - 您必须创建一个全新的适配器。您是否可以重复使用现有的 RecyclerView - 这取决于您。

您可以通过调用 updateOptions method:

来更新现有 FirestoreReyclerAdapter 适配器的选项(包括查询)
val newOptions = FirestoreRecyclerOptions.Builder<ItemModel>()
    .setQuery(newQuery, ItemModel::class.java)
    .setLifecycleOwner(this)
    .build()
adapter.updateOptions(newOptions);

查看此 branch,该功能于 2019 年 7 月添加。

我在我的 graddle 中进行了此更新,并且 updateOptions 方法可用。确保在你的 gradle 模块应用程序中你至少有这些版本或更高版本:

implementation'com.firebaseui:firebase-ui-firestore:6.3.0'
implementation 'com.firebaseui:firebase-ui-storage:6.3.0'

然后这样做:

val newOptions = FirestoreRecyclerOptions.Builder<ItemModel>()
    .setQuery(newQuery, ItemModel::class.java)
    .setLifecycleOwner(this)
    .build()
adapter.updateOptions(newOptions);