Llamada GET en Android Studio con Java

Tiempo de lectura: 2 minutos

Para crear una lista de elementos obtenidos de una llamada GET y mostrarlos, hay que seguir los siguientes pasos como muestro en el ejemplo.

Primero creamos un archivo XML para definir la vista con la lista. Para poder mostrar una lista, vamos a usar el elemento “ListView”.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

A continuación inicializamos el ListView y el Adapter e inicializamos

Inicializamos GetDataTask que extiende de AsyncTask para realizar una solicitud GET en segundo plano doInBackground que crea una conexión con la URL lee los datos de esa conexión y los almacenamos en una lista como ejemplo lo llamamos data.

Cuando la tarea en segundo plano está completa, llamamos a onPostExecute y recibimos los datos JSON.

Finalmente, agregamos al Adapter del ListView- Y para actualizar la vista usamos adapter.notifyDataSetChanged().

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> adapter;

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

        listView = findViewById(R.id.listView);
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);

        // Método para realizar la solicitud GET
        new GetDataTask().execute();

        listView.setAdapter(adapter);
    }

    private class GetDataTask extends AsyncTask<Void, Void, List<String>> {

        @Override
        protected List<String> doInBackground(Void... voids) {
            // URL del endpoint correspondiente en tu servidor
            String apiUrl = "url_api";

            List<String> data = new ArrayList<>();

            try {
                URL url = new URL(apiUrl);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");

                BufferedReader bufferedReader = new BufferedReader(
                        new InputStreamReader(urlConnection.getInputStream()));
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    data.add(line); // Agregar los datos obtenidos
                }

                bufferedReader.close();
                urlConnection.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return data;
        }


        @Override
        protected void onPostExecute(List<String> result) {
            super.onPostExecute(result);
            List<String> centerNames = new ArrayList<>();

            try {
                for (String jsonData : result) {
                    JSONArray jsonArray = new JSONArray(jsonData);
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        String centerName = jsonObject.getString("name");
                        centerNames.add(centerName);
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Log.e("JSON_PARSE_ERROR", "Error parsing JSON: " + e.getMessage());
                // Log.e("JSON_PARSE_ERROR", "JSON Data: " + jsonData);
            }

            adapter.addAll(centerNames);
            adapter.notifyDataSetChanged();
        }
    }

}

Por último muestro el resultado de la lista en vista móvil.

Espero que les sirva de ayuda! Que tengan un feliz día.

Deja un comentario