Olá!
Estou implementando o que aprendia na aula, mas em java. Tive que fazer algumas adequações porque estou utilizando callback.
O app executou tudo, porém não está mantendo os dados quando ligo o modo avião e rotaciono a tela. Vocês podem me ajudar? Desde já agradeço a atenção!
Minha activity:
public class ComandasActivity extends AppCompatActivity {
private final String TITULO = "Comandas";
private ListaComandasAdapter adapter;
private ListaComandasViewModel viewModel;
private ComandaRepository repository = new ComandaRepository();;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comandas);
setTitle(TITULO);
ListaComandasViewModelFactory factory = new ListaComandasViewModelFactory(repository);
viewModel = new ViewModelProvider(this, factory).get(ListaComandasViewModel.class);
configuraLista();
buscaComandas();
}
private void configuraLista() {
RecyclerView listaComandas = findViewById(R.id.activity_comandas_list);
adapter = new ListaComandasAdapter(ComandasActivity.this);
listaComandas.setAdapter(adapter);
}
private void buscaComandas() {
viewModel.buscaComandas(new ComandaRepository.DadosCarregadorCallBack<MutableLiveData<List<Comanda>>>() {
@Override
public void quandoSucesso(MutableLiveData<List<Comanda>> liveData) {
liveData.observe(ComandasActivity.this, adapter::atualiza);
}
@Override
public void quandoFalha(String erro) {
Toast.makeText(ComandasActivity.this, "Falha ao carregas dados.", Toast.LENGTH_LONG).show();
}
});
}
}
Meu repository:
public class ComandaRepository {
private MutableLiveData<List<Comanda>> liveData = new MutableLiveData<>();
private final VisualService service = new VisualRetrofit().getVisualService();
public void buscaComandas(DadosCarregadorCallBack<MutableLiveData<List<Comanda>>> callBack) {
Call<List<Comanda>> call = service.buscaComandas("ABERTO");
call.enqueue(new CallbackComRetorno<>(new CallbackComRetorno.RespostaCallback<List<Comanda>>() {
@Override
public void quandoSucesso(List<Comanda> comandas) {
liveData.setValue(comandas);
callBack.quandoSucesso(liveData);
}
@Override
public void quandoFalha(String erro) {
callBack.quandoFalha(erro);
}
}));
}
public interface DadosCarregadorCallBack<T> {
void quandoSucesso(T resultado);
void quandoFalha(String erro);
}
}
Meu viewmodel:
public class ListaComandasViewModel extends ViewModel {
private ComandaRepository repository;
public ListaComandasViewModel(ComandaRepository repository) {
this.repository = repository;
}
public void buscaComandas(ComandaRepository.DadosCarregadorCallBack<MutableLiveData<List<Comanda>>> callBack) {
repository.buscaComandas(callBack);
}
}