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"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<?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>
<?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;
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>> {
protected List<String> doInBackground(Void... voids) {
// URL del endpoint correspondiente en tu servidor
String apiUrl = "url_api";
List<String> data = new ArrayList<>();
URL url = new URL(apiUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream()));
while ((line = bufferedReader.readLine()) != null) {
data.add(line); // Agregar los datos obtenidos
urlConnection.disconnect();
} catch (IOException e) {
protected void onPostExecute(List<String> result) {
super.onPostExecute(result);
List<String> centerNames = new ArrayList<>();
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) {
Log.e("JSON_PARSE_ERROR", "Error parsing JSON: " + e.getMessage());
// Log.e("JSON_PARSE_ERROR", "JSON Data: " + jsonData);
adapter.addAll(centerNames);
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();
}
}
}
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.
Post Views: 2
Relacionado