1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[android] Usar Retrofit para popular um RecyclerView

Discussão em 'Mobile' iniciado por Stack, Novembro 7, 2024 às 14:12.

  1. Stack

    Stack Membro Participativo

    Preciso trazer uma lista de cidades em um RecyclerView de um WebService usando o Retrofit. Mas a minha List esta vindo null.

    Tenho uma Class cidades com os dados que preciso pegar do WebService, a Class DadosCidades onde configuro o Retrofit.

    A minha Interface DataServer:

    public interface DataServer {
    @GET("cidade-nome.php?nome=rio")
    Call<List<Cidades>> getCidades();
    }


    O Adapter CityListAdapter:

    public class CityListAdapter extends RecyclerView.Adapter<CityListAdapter.CityViewHolder> {

    Context context;
    List<Cidades> cidadesList;


    public CityListAdapter(Context context, List<Cidades> cidadesList) {
    this.context = context;
    this.cidadesList = cidadesList;
    }


    @Override
    public CityListAdapter.CityViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {


    View view = LayoutInflater.from(context).inflate(R.layout.single_row_view, viewGroup, false);

    return new CityViewHolder(view);
    }

    @Override
    public void onBindViewHolder(CityListAdapter.CityViewHolder cityViewHolder, int i) {

    cityViewHolder.txtNome.setText(cidadesList.get(i).getNome());
    cityViewHolder.txtSigla.setText(cidadesList.get(i).getSigla_estado());
    cityViewHolder.txtLatitude.setText(cidadesList.get(i).getLatitude());
    cityViewHolder.txtLongitude.setText(cidadesList.get(i).getLongitude());

    }

    @Override
    public int getItemCount() {

    return cidadesList.size();
    }

    public class CityViewHolder extends RecyclerView.ViewHolder {

    TextView txtNome;
    TextView txtSigla;
    TextView txtLatitude;
    TextView txtLongitude;

    public CityViewHolder(View itemView) {
    super(itemView);

    txtNome = itemView.findViewById(R.id.txtNome);
    txtSigla = itemView.findViewById(R.id.txtSigla);
    txtLatitude = itemView.findViewById(R.id.txtLatitude);
    txtLongitude = itemView.findViewById(R.id.txtLongitude);
    }
    }
    }


    Um xml single_row_view, com o TextView para o RecyclerView e a minha Activity onde quero exibir a lista de cidades.

    Activity SearchActivity :

    public class SearchActivity extends AppCompatActivity{

    RecyclerView recyclerView;
    CityListAdapter adapter;
    List<Cidades> cidadesList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);

    cidadesList = new ArrayList<>();

    recyclerView = findViewById(R.id.recycler_view_notice_list);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    DataServer dataServer = DadosCidades.getDadosCidades().create(DataServer.class);

    Call<List<Cidades>> call = dataServer.getCidades();

    call.enqueue(new Callback<List<Cidades>>() {
    @Override
    public void onResponse(Call<List<Cidades>> call, Response<List<Cidades>> response) {

    cidadesList = response.body();

    Log.d("SearchActivity", cidadesList.toString());

    adapter = new CityListAdapter(getApplicationContext(), cidadesList);
    recyclerView.setAdapter(adapter);

    }

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

    }
    });

    }

    }


    E por fim o xml activity_search:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.activity.SearchActivity">

    <android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view_notice_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

    </LinearLayout>


    No entanto a minha cidadesList = new ArrayList<>(); vem size = 0 Já vi vários tutoriais e até agora não consegui resolver.

    Continue reading...

Compartilhe esta Página