1
resposta

Atualizando os dados

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);
    }
}
1 resposta

Fala Jefferson, tudo bem ?

Consegue mostrar pra gente sua factory, imagino que o problema esteja ali.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software