Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo listar os dados vindo do webservice

Segue o pedaço de código para listagem dos dados:

final ListView clientesView = findViewById(R.id.lista_clientes);

        Call<List<Cliente>> clientes = new RetrofitInicializador().getClienteService().listar();

        clientes.enqueue(new Callback<List<Cliente>>() {
            @Override
            public void onResponse(Call<List<Cliente>> call, Response<List<Cliente>> response) {
                ArrayAdapter<Cliente> adapter = new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, response);
                clientesView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<List<Cliente>> call, Throwable t) {

            }
        });

A imagem onde está mostrando o problema

2 respostas

Fala ai Renan, de boa ?

Cara vamos primeiro resolver o seu problema, segundo o erro, o thisque você está passando não é um contexto, nesse caso ele está sendo referenciado como a classe anonima do callback.

Se você estiver numa Activity, basta você passar o nome completo da classe para usar o this:

SuaActivity.this

solução!

Fala ai Matheus, consegui consertar o código:

No caso, no construtor do ArrayAdapter, no terceiro argumento eu estava passando um objeto do tipo Call<List<Cliente>>, porém corrigindo aqui, eu fiz um pedaço de código da seguinte maneira:

List<Cliente> clientes = response.body

Onde aqui eu consegui pegar a lista de objetos no corpo da requisição e jogar para uma lista de Clientes e passar o mesmo para o construtor do ArrayAdapter, abraços.

final ListView clientesView = findViewById(R.id.lista_clientes);

        final Call<List<Cliente>> clientes = new RetrofitInicializador().getClienteService().listar();

        clientes.enqueue(new Callback<List<Cliente>>() {
            @Override
            public void onResponse(Call<List<Cliente>> call, Response<List<Cliente>> response) {
                List<Cliente> clientes = response.body();
                ArrayAdapter<Cliente> adapter = new ArrayAdapter<Cliente> (ClientesActivity.this, android.R.layout.simple_list_item_1, clientes);
                clientesView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<List<Cliente>> call, Throwable t) {

            }
        });

        super.onResume();