如何更新 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)
有人可以指导我吗?
您将必须完全按照您现在已经在做的事情做:
- 创建一个新的查询对象
- 将其提供给 FirestoreRecyclerAdapter 的新实例
- 将适配器添加到 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);
我正在使用 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)
有人可以指导我吗?
您将必须完全按照您现在已经在做的事情做:
- 创建一个新的查询对象
- 将其提供给 FirestoreRecyclerAdapter 的新实例
- 将适配器添加到 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);