2015-01-26 8 views
5

Sto provando a contare tutti i valori nel mio database Firebase in Java. Ma non funziona, ho guardato alcuni tutorial per questo ma non ho trovato nessuno per i programmatori Java.Conta tutti i valori API Java Firebase

Qui è la mia base di dati:

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

Ecco il mio codice, notare la linea ho cercato di usare valore di conteggio massimo:

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

      //The line below does not work getting the maximum values 
      int maxValueInMap=(Collections.max(newPost.values().toString())); 

     } 

Questo è l'errore che ottengo alla funzione max da Collezioni:

Il metodo max (Collection) nel tipo Collections non è applicabile per gli argomenti (stringa)

Qualcuno sa come risolvere questo problema in Java, grazie in anticipo.

risposta

3

ottenuto che funziona, mentre dentro la mia directory bambino Firebase, ha trovato la funzione Firebase:

  long maxNum = snapshot.getChildrenCount(); 
      int nums = (int)maxNum; 
      disp_msg.setText(msg.toString() + Integer.toString(nums)); 
0

dovrebbe essere:

int maxValueInMap=(Collections.max(newPost.values())); 

accidentalmente fatto .toString. Una stringa non è un Collection e pertanto .max non funzionerà su di esso.

Si potrebbe tuttavia consigliare, vedendo se è possibile fare un ordine con la clausola limite, in quanto potrebbe essere costoso eseguire più volte Collections.max. Non riesco a vedere una funzione TOP nei documenti firebase, ma sarebbe ancora meglio.