【问题标题】:get random value android firebase java获取随机值android firebase java
【发布时间】:2015-01-26 17:00:55
【问题描述】:

我想通过在 java 中使用 push() 从列表中随机获取。

这是我存储数据的代码:

                Firebase publRef = f.child("Language").child("German").child("Message");
                Firebase newPublRef = publRef.push();
                Map<String, Object> publ = new HashMap<String, Object>();
                publ.put("pubMsg", writeMsgField.getText().toString());
                newPublRef.setValue(publ);

这就是它在我的 firebase 数据库中的样子:

Language
   German
      Message
        -Jf6ShYy7niHrqg_x4Tc: "Tomorrow is very windy"
        -Jf9v0xHAxINUUANrORU: "Today is very windy and rainy"

这就是我检索数据的方式:

        Firebase f = new Firebase("https://myapp.firebaseio.com/Language/German/Message/");             
    f.addValueEventListener(new ValueEventListener() {

        public void onDataChange(DataSnapshot snapshot) {
            disp_msg = (TextView)findViewById(R.id.display_msg);
            //disp_msg.setText(snapshot.getValue().toString());
            Iterable<DataSnapshot> ds = snapshot.getChildren();
            Iterator<DataSnapshot> ids = ds.iterator();
            Map<String, Object> newPost = (Map<String, Object>) ids.next().getValue();
            String msg = newPost.get("pubMsg").toString();
            disp_msg.setText(msg.toString());

        }

我想在我的数据库中检索一个随机值。 例如。获取随机值,可以是“明天风很大”或“今天风很大,下雨”。

你们能否帮我提供一些我可以在 java 中使用的信息,我对其他语言仍然缺乏经验。提前谢谢你。

已解决

        //getting maximum number of children
        long allNum = snapshot.getChildrenCount();
        int maxNum = (int)allNum;

        //getting the random integer from number of children
        int randomNum = new Random().nextInt(maxNum);

        int count = 0;

        //has next will check the next value while count is used as a position substitute.
        while(ids.hasNext() && count < randomNum) {
            ids.next();
            count ++; // used as positioning.
           }

【问题讨论】:

    标签: java android random firebase


    【解决方案1】:

    找出数据库中可能值(numvals)的数量,然后在中使用它

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

    然后选择数据库中的“随机”条目。

    【讨论】:

    • 您好,感谢您的回答,但它没有告诉我如何获取 id 在 firebase 中的位置,它只告诉我如何获取随机数字。
    • 您的代码示例表明您已经在使用迭代器来查看 DataSnapshot。只需随机迭代几次即可获得所需的值。
    猜你喜欢
    • 2017-07-06
    • 2012-07-13
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 2021-07-31
    相关资源
    最近更新 更多