我们可以在不重新设置整个适配器的情况下更新 Firestore 回收器适配器的查询吗?
Posted
技术标签:
【中文标题】我们可以在不重新设置整个适配器的情况下更新 Firestore 回收器适配器的查询吗?【英文标题】:can we update query of firestore recycler adapter without setting the whole adapter again? 【发布时间】:2018-06-09 09:34:44 【问题描述】:我正在使用 Firestore 回收器适配器在回收器视图中填充我的文档,如下所示。它工作正常。如何更新查询?
query = FirebaseFirestore.getInstance()
.collection("partners").orderBy("mCompanyName").limit(limitValue);
options = new FirestoreRecyclerOptions.Builder<PartnerInfoPojo>()
.setQuery(query, PartnerInfoPojo.class).build();
adapter = new FirestoreRecyclerAdapter<PartnerInfoPojo, PartnersViewHolder>(options)
@Override
public void onBindViewHolder(final PartnersViewHolder holder, int position, final PartnerInfoPojo model)
Logger.v("onBindViewHolder ....." + position);
@Override
public PartnersViewHolder onCreateViewHolder(ViewGroup group, int i)
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.single_partner_row1, group, false);
return new PartnersViewHolder(view);
@Override
public void onDataChanged()
super.onDataChanged();
Logger.v("on Data changed");
;
mPartnerList.setAdapter(adapter);
【问题讨论】:
【参考方案1】:您无法更新查询,您正在使用这个:
query = FirebaseFirestore.getInstance()
.collection("partners").orderBy("mCompanyName").limit(limitValue);
然后在setQuery
中使用变量query
,更新查询的唯一方法是更改它示例:
query = FirebaseFirestore.getInstance()
.collection("partners").orderBy("mCompanyName").equalTo(name);
但是如果你的意思是更新数据..那么在另一个活动之前更新数据也许然后在这个活动中你会得到更新的数据
【讨论】:
【参考方案2】:这是刷新 Firestore 回收器适配器的解决方法。 在更改查询之前执行此操作。
adapter.stopListening();
现在根据您的要求更改您的查询 并设置您的适配器。现在设置适配器重新开始监听。
adapter.startListening();
【讨论】:
以上是关于我们可以在不重新设置整个适配器的情况下更新 Firestore 回收器适配器的查询吗?的主要内容,如果未能解决你的问题,请参考以下文章
SSAS - 是不是可以在不重新部署整个多维数据集的情况下将属性添加到现有维度