【问题标题】:FirebaseUI - get random list using FirebaseRecyclerAdapterFirebaseUI - 使用 FirebaseRecyclerAdapter 获取随机列表
【发布时间】:2017-06-28 12:35:51
【问题描述】:

Firebase 数据结构

{ "questions" : {
"-KkLGS71meu8aA_wcqTq" : {
  "q_answer" : "....",
  "q_category" : "....",
  "q_qid" : "1",
  "q_question" : "..."
},
"-KkLGkf8tNb-OKwu2qVa" : {
  "q_answer" : "...",
  "q_category" : "...",
  "q_qid" : "2",
  "q_question" : "..."
},
"-KkLH1T1ZhFKJaqYFuJ4" : {
  "q_answer" : "...",
  "q_category" : "...",
  "q_qid" : "3",
  "q_question" : "..."
} }

数据库引用

questionRef.orderByChild("q_qid")

如何使用 FirebaseRecyclerAdapter 生成随机查询和显示? 还有其他方法吗?

编辑:

我试试这个代码

questionRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    long allNum = dataSnapshot.getChildrenCount();
                    int maxNum = (int)allNum;
                    int minNum = 1;
                    int randomNum = new Random().nextInt(maxNum - minNum + 1) + minNum;

                    int count = 0;
                    Iterable<DataSnapshot> ds = dataSnapshot.getChildren();
                    Iterator<DataSnapshot> ids = ds.iterator();
                    Map<String, Object> question;

                    while(ids.hasNext() && count < randomNum) {
                         question = (Map<String, Object>) ids.next().getValue();

                        String q = question.get("q_question").toString();
                        viewHolder.question.setText(q);

                        count ++; // used as positioning.
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

但有些问题不止一次出现?

【问题讨论】:

    标签: android firebase firebase-realtime-database android-recyclerview firebaseui


    【解决方案1】:

    您需要做的是找出可能值的数量,numVals 在数据库中,然后在以下代码行中使用它:

    int random = new Random().nextInt(numVals);
    

    如果您在代码中使用迭代器来迭代 DataSnapshot,而不是仅仅迭代随机次数以获得所需的值。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多