我想按最高分数对记录进行排序。 用户在不同记录中具有不同的分数。 在节点上收集每个用户的记录。 结的名称是“得分”。 分数包含计算得分。 例如,对于“亚当”。 为您特别准备 ;必须列出他们的记录并列出哪个记录的顺序。
我想 https://screenpresso.com/=wrwQc
数据库;
{
"Records" : {
"-L1pFRQg8anT4_-4V60B" : {
"score" : "510.159",
"name" :"Adam"
},
"-L1pFRQg8anT4_-5S90B" : {
"score" : "405.02002",
"name" :"Adam"
},
"-L1yBr5zBXAbD0FjzBRs" : {
"score" : "328.956",
"name" :"Jayden"
},
"-L1yDiwgC36ARfo-98SV" : {
"score" : "152",
"name" :"Nicole"
},
我使用类似的东西。它读取此数据库中的所有节点。如果被调用的用户没有指定“layout_hide”,它就可以工作。显示搜索到的用户的数据。但这是性能问题。 Stabil不起作用。
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("Records")
.orderByChild("score")
.getReference()
FirebaseRecyclerOptions<Siralama> options =
new FirebaseRecyclerOptions.Builder<Siralama>()
.setQuery(query, Siralama.class)
.build();
final FirebaseRecyclerAdapter siralamaRecyclerViewAdapter = new FirebaseRecyclerAdapter<Siralama, MainActivity.SiralamaViewHolder>(options) {
@Override
public MainActivity.SiralamaViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.siralama_sizeozel_row, parent, false);
return new MainActivity.SiralamaViewHolder(view);
}
@Override
protected void onBindViewHolder(MainActivity.SiralamaViewHolder holder, final int position, Siralama model) {
if (model.getUid().equals(mAuth.getCurrentUser().getUid())) {
holder.setScore(model.getScore());
}else{
getRef(position).removeValue();
mSizeOzelList.removeViewAt(position);
mSizeOzelList.removeAllViews();
holder.layout_Hide();
}
}
};
mSizeOzelList.setAdapter(siralamaRecyclerViewAdapter);
siralamaRecyclerViewAdapter.startListening();
答案 0 :(得分:0)
查看Official Documentation on Retrieveing Data from Firebase Realtime Database
这说
使用Firebase数据库查询,您可以有选择地检索数据 基于各种因素。要在数据库中构建查询,请执行 首先指定您希望如何使用其中一个订购数据 排序函数: orderByChild(),orderByKey(), 或orderByValue()即可。然后,您可以将这些与其他五种方法相结合 进行复杂 查询:的 limitToFirst(),limitToLast(),startAt(),ENDAT(), 和equalTo()强>