llenar - listview dinamico android studio
ArrayAdapter en android para crear una lista simple (7)
Traté de crear una Activity
en Android, esta actividad solo contiene un ListView
nada más.
Como sé que para completar la lista, debemos usar un ArrayAdapter
.
Entonces, para entender el ArrayAdapter, he leído el siguiente enlace:
http://developer.android.com/reference/android/widget/ArrayAdapter.html
¡Pero todavía no puedo entenderlo claramente!
Una de las mayores dudas es por qué el constructor necesita un TextView
recurso TextView
mientras que mi actividad no tiene ningún TextViews, ¿qué debería darle?
No estoy hablando de que este es el único constructor, pero lo que trato de explicar es que no puedo entenderlo.
Para crear una simple lista de vista, también me referí al siguiente enlace:
Simple ListView usando el ejemplo ArrayAdapter.
Pero nuevamente, ¿mi principal duda es por qué necesita una identificación de recurso TextView?
Si alguien puede explicarlo con un ejemplo, será de gran ayuda.
EDITAR:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
Pero, de nuevo, la principal duda es por qué necesita el ID de recursos de TextView.
Mira el constructor y los params.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Agregado en el Constructor de nivel 1 de API
Parámetros
context
Elcontext
actual.
resource
El ID de recurso para un archivo de diseño que contiene un diseño para usar al crear instancias de vistas.
textViewResourceId
ID de TextView dentro del recurso de disposición para ser objetos poblados Los objetos para representar enListView
.
android.R.id.text1
refiere a la identificación del texto en el recurso de Android. Entonces no necesitas tener uno en tu actividad.
Aquí está la lista completa
http://developer.android.com/reference/android/R.id.html
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
this
refiere al contexto de la actividad
android.R.layout.simple_list_item_1
simple_list_item_1 es el diseño en android.R.layout.
android.R.id.text1
refiere a la identificación de recursos de Android.
values
es una matriz de cadenas del enlace que proporcionó
http://developer.android.com/reference/android/R.layout.html
ArrayAdapter utiliza un TextView para mostrar cada elemento dentro de él. Detrás de escena, usa el método toString()
de cada objeto que contiene y lo muestra dentro de TextView. http://developer.android.com/reference/android/widget/ArrayAdapter.html tiene una cantidad de constructores que se pueden usar y el que ha usado en su ejemplo es:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
De forma predeterminada, ArrayAdapter usa el TextView predeterminado para mostrar cada elemento. Pero si lo desea, puede crear su propio TextView e implementar cualquier diseño complejo que desee ampliando la clase TextView. Esto luego tendría que ir al diseño para su uso. Puede hacer referencia a esto en el campo textViewResourceId para vincular los objetos a esta vista en lugar de los valores predeterminados.
Para su uso, le sugiero que use el constructor:
ArrayAdapter(Context context, int resource, T[] objects).
En tu caso, esto sería:
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)
y debería estar bien. Esto vinculará cada cadena a la pantalla predeterminada de TextView: fondo blanco simple y llano.
Entonces, para responder a su pregunta, no tiene que usar el textViewResourceId.
El ID del recurso TextView que necesita es para un archivo de diseño TextView, por lo que no estará en la misma actividad.
Puede crearlo yendo a Archivo> Nuevo> XML> Archivo de diseño XML, e ingrese el tipo de widget, que es ''TextView'' en el campo de la etiqueta raíz.
Fuente: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/
No necesita usar id para la vista de texto. Puede obtener más información de android arrayadapter . El siguiente código inicializa el arrayadapter.
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
Para su pregunta, la respuesta es android.R.id.text1
is int: La identificación de TextView dentro del recurso de disposición que se debe llenar.
ArrayAdapter tiene tantos constructores con diferente cantidad de argumentos que menciono algunos de ellos
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
Ahora puedes entender que cada constructor es diferente y usaron diferentes listas de argumentos.
Y una respuesta simple es que puede usar ArrayAdapter con vista de texto dentro de un archivo xml de destino o sin él. No importa. Y no necesita especificar el ID de vista de texto, puede usarlo sin él. Pero es posible que deba ir con alguna opción de avance con su vista de lista simple, debe ir con una vista de texto.
Aquí ejemplo de muestra
ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.ListView,StringArray);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
Este es también un código válido que puede usar con mucho más claridad.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Aquí, recurso significa la ''id'' del Diseño que está utilizando al instanciar la vista.
Ahora, este diseño tiene muchas vistas secundarias con sus propios identificadores. Entonces, textViewResourceId
dice qué vista secundaria necesitamos completar con los datos.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
También soy nuevo en Android, así que podría estar equivocado. Pero según mi comprensión al usar esto para la creación de la vista de lista, el segundo argumento es el diseño de los elementos de la lista. Un diseño consiste en muchas vistas (vista de imagen, vista de texto, etc.). Con el tercer argumento está especificando en qué vista o vista de texto desea que se muestre el texto.