gpt4 book ai didi

android - 更改查询时如何使用 FirebaseUI 刷新 FirebaseAdapter 中的数据?

转载 作者:太空狗 更新时间:2023-10-29 13:46:48 25 4
gpt4 key购买 nike

我想允许用户对数据进行排序和过滤。我有这个 Firebase 适配器的实现,一切都运行良好。当我想使用例如过滤数据时价格,RecyclerView 中的数据没有变化。你能帮忙告诉我哪里做错了吗?

这是查询 - 取决于用户从 Spinner 中选择了什么:

Query query;

if (!priceLower.equals("Any")) { // option from Spinner
query = FirebaseDatabase.getInstance()
.getReference()
.child("Students")
.orderByChild("price")
.startAt(priceLower)
.limitToLast(50);
} else if (!priceHigher.equals("Any")) {
query = FirebaseDatabase.getInstance()
.getReference()
.child("Students")
.orderByChild("price")
.endAt(priceHigher)
.limitToLast(50);
} else {
query = FirebaseDatabase.getInstance()
.getReference()
.child("Students")
.orderByChild("price")
.limitToLast(50);
}

getData(query);

这是从 Firebase 获取数据的方法:

 public void getData(Query query) {
FirebaseRecyclerOptions<Students> firebaseOptions =
new FirebaseRecyclerOptions.Builder<Students>()
.setQuery(query, Students.class)
.build();

FirebaseAdapter = new FirebaseRecyclerAdapter<Students, StudentsHolder>(firebaseOptions) {
@NonNull
@Override
public StudentsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_students, parent, false);
return new StudentsHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull StudentsHolder holder, int position, @NonNull final Students student) {
holder.setName(student.getName());
holder.setPrice(student.getPrice());

holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...
}
});
}
@Override
public void onDataChanged() {
progressDialog.setVisibility(View.GONE);
mRecyclerView.setAdapter(FirebaseAdapter);
}
};
}

最佳答案

要解决这个问题,您应该在 getData() 方法的末尾添加以下代码行:

FirebaseAdapter.startListening();

这意味着每次更改查询时,您都会创建并设置一个新的适配器,并且您还会开始监听更改。

关于android - 更改查询时如何使用 FirebaseUI 刷新 FirebaseAdapter 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52276572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com