ArrayAdapter en android para crear una lista simple

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 adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); 

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. ArrayAdapter 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(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.

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 El context 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 en ListView .

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 adapter = new ArrayAdapter(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

 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.

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 objects) ArrayAdapter(Context context, int resource, int textViewResourceId, List 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(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.