¿Es siempre necesario el argumento textViewResourceId?

Al escribir mi propio adaptador que extiende la clase ArrayAdapter , me encontré con los diferentes constructores disponibles y me di cuenta de que todos requieren un parámetro textViewResourceId . Así que al principio, decidí que iba a alimentar mi clase de adaptador personalizado android.R.id.text1 :

MyAdapter adapter = new MyAdapter(this, R.layout.myRow, android.R.id.text1); 

Sin embargo, más tarde durante mi desarrollo, decidí anular el método getView donde

 TextView label = (TextView) myRow.findViewById(android.R.id.text1); label.setText("Position #" + position); 

Que funcionó bien. Pero entonces esta pregunta vino a mi mente: si estoy haciendo la lógica de cómo mostrar la fila, ¿es realmente necesario proporcionar un textViewResourceId al constructor cuando inicie mi adaptador personalizado? ¿O es que cuando reemplazas a getView , ese parámetro ya no es necesario? Si mi pensamiento es correcto, ¿cuál es la práctica común para instanciar el adaptador sabiendo que va a sobrepasar el comportamiento de visualización de todos modos?

Si está sobreescribiendo getView no es necesario especificar un textViewResourceId adecuado .. Puede pasar en 0. La única vez que el ArrayAdapter trata de acceder a ese ID está dentro de getView .. Ya que está sobreescribiendo getView y proporcionar su propia vista textViewResourceId nunca es Ya que la superclase espera una ID de vista … todavía necesitas pasar una ID de vista a la super llamada .. sin embargo, puede ser 0 puesto que nunca se utilizará

ArrayAdapter Fuente confirmando todo esto

Si no especifica un textViewResourceId adecuado y no sobreescribe getView .. getView en el ArrayAdapter asume que su vista completa es un TextView .. Si su vista no es un TextView .. terminará con fallos de un ClassCastException ..

No es necesario utilizar ningún tipo de compilación en el adaptador.

Usted puede extender el BaseAdapter y hacer sus propias reglas de qué mostrar, qué tipo de datos para celebrar etc …

De hecho, casi nunca he utilizado los adaptadores incorporados que android tiene fuera de la caja, porque usar el baseAdapter es muy fácil como es.

  • Cómo mostrar las sugerencias de AutoCompleteTextView en orientación horizontal
  • Elemento de fila personalizada de Android para ListView
  • ¿Cómo puedo actualizar una sola fila en un ListView?
  • Android ListView notifyDataSetChanged () de Service
  • Iniciar FragmentTransaction desde dentro de ArrayAdapter
  • ListView - getView se llama demasiadas veces
  • Cómo llamar a la función de la actividad principal de ArrayAdapter personalizado?
  • Actualización de elementos de Android ArrayAdapter
  • GridView mediante Custom ArrayAdapter
  • Android personalizado ArrayAdapter método getView llamado varias veces - restablecer valor dinámico TextView
  • Array Adapter notifyDataSetChanged () no funcionará
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.