2015-01-26 5 views
3

Я хочу получить случайное из своего списка, используя push() в java.получить случайное значение android firebase java

Вот мой код, чтобы сохранить мои данные:

   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. 
      } 

ответ

3

Узнайте количество возможных значений (numvals) в базе данных, а затем использовать это в

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

и выберите «случайный» й запись в базе данных ,

+0

привет спасибо за ваш ответ, но он не показывает мне, как получить позиции идентификаторов в firebase, это только покажет мне, как получить случайную цифру. – nothingness

+0

В вашем примере кода показано, что вы уже используете итератор для просмотра DataSnapshot. Просто повторите случайное число раз, чтобы получить требуемое значение. –