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