Olá pessoal tudo bem?
Sou iniciante e estou tentando recuperar informações do BD firebase para carregar os itens, porém não estou conseguindo. Acredito que o problema está na implementação do tipo de retorno do método recuperaDisciplina, pois tenho que retornar a String da disciplina recuperada e está retornando o nome do objeto.
Segue o código abaixo, desde já agradeço qualquer comentário ou idéia.
public class SelecionaDisciplinaDialog extends DialogFragment {
int position = 0;
//Inicializa Firebase
private DatabaseReference firebaseRef = ConfiguracaoFirebase.getFirebaseDatabase();
private FirebaseAuth autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
public interface SingleChoiceListner {
void onPositiveButtonClicked(String[] list, int position);
void onNegativeButtonClicked();
}
SingleChoiceListner mListener;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
try {
mListener = (SingleChoiceListner) context;
} catch (Exception e) {
throw new ClassCastException(getActivity() + "Método deve ser implementado");
}
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
//Carregando array com as disciplinas armazenadas na string
final String[] list = {recuperaDisciplina().toString()};
builder.setTitle("Selecione a Disciplina")
.setSingleChoiceItems(list, position, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
position = i;
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
mListener.onPositiveButtonClicked(list, position);
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
mListener.onNegativeButtonClicked();
}
});
return builder.create();
}
public String[] recuperaDisciplina() {
String emailUsuario = autenticacao.getCurrentUser().getEmail();
String idUsuario = Base64Custom.codificarBase64(emailUsuario);
final List<Movimentacao> movimentacoes = new ArrayList<>();
ValueEventListener valueEventListenerMovimentacoes;
DatabaseReference movimentacaoRef = firebaseRef.child("movimentacao")
.child(idUsuario);
valueEventListenerMovimentacoes = movimentacaoRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int difDias = 0;
//Recupera os itens(filhos de dataSnapshot) que atendem a condição
for (DataSnapshot dados : dataSnapshot.getChildren()) {
Movimentacao movimentacao = dados.getValue(Movimentacao.class);
movimentacao.setKey(dados.getKey());
if (movimentacao.getTipo().equals("d")) {
movimentacoes.add(movimentacao);
String Disciplina = movimentacao.getDisciplina();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return new String[0];
}
}