GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Usar o Compare com dados vindos do Firebase Real Datetime

java
Tags: #<Tag:0x00007f186116e7b8>

#1

BRIGA FEIA
Estou tentando ordenar um List de Objetos. A classe funciona bem com os dados que pego de um JSON. Mas um dos campos eu preencho do Firebase Real Datetime, após pesquisa pelo ID. Justamente esse campo se comporta de maneira totalmente inesperada e JUSTAMENTE o que preciso para ordenar por ele.
A função Compare não ordena por ele, pois apesar de exibir direito no RecyclerView algumas linhas retornam null e trava o Compare. Obs.: Com qualquer outro campo eu ordeno perfeitamente, somente o valor que vem do Firebase que dá problema.
Vou jogar abaixo mais ou menos a encrenca, espero que dê pra entender:

// PARTE 1 --------------------
List dadosList = new ArrayList<>();;

for (int i = 0; i< jsonArray.length(); i++){

MeuObjeto dados = new MeuObjeto ();

dados.setNome(jsonObject.getString(“nome”));

// Aqui eu pesquiso no FIREBASE

for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
localizacao = childSnapshot.getValue(LocationData.class);
}

dados.setLocalizacao(localizacao.local);

// PARTE 2 ----------------------------
dadosList.add(dados);
Collections.sort(dadosList,new ComparadorDistancia());

return dadosList;
}

// CLASSE PARA COMPARAR
static class ComparadorDistancia implements Comparator {

@Override
public int compare(MeuObjeto o1, MeuObjeto o2) {

if (Integer.parseInt(o1.getLocalizacao()) < Integer.parseInt(o2.getLocalizacao())) {
return -1;

} else if (Integer.parseInt(o1.getLocalizacao()) > Integer.parseInt(o2.getLocalizacao())) {
return 1;
}

return 0;
}


#2

Nao seria mais simples e eficiente trazer o resultado ordenado do firebase?

https://firebase.google.com/docs/database/android/lists-of-data?hl=pt-br