如何在Android

时间:2018-01-18 13:39:00

标签: android firebase firebase-realtime-database

我想按最高分数对记录进行排序。 用户在不同记录中具有不同的分数。 在节点上收集每个用户的记录。 结的名称是“得分”。 分数包含计算得分。 例如,对于“亚当”。 为您特别准备 ;必须列出他们的记录并列出哪个记录​​的顺序。

我想 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();

1 个答案:

答案 0 :(得分:0)

查看Official Documentation on Retrieveing Data from Firebase Realtime Database

这说

  

使用Firebase数据库查询,您可以有选择地检索数据   基于各种因素。要在数据库中构建查询,请执行   首先指定您希望如何使用其中一个订购数据   排序函数: orderByChild(),orderByKey(),   或orderByValue()即可。然后,您可以将这些与其他五种方法相结合   进行复杂   查询:的 limitToFirst(),limitToLast(),startAt(),ENDAT(),   和equalTo()