El adaptador de vista de lista no funciona, getView no se llama.

Creo que me estoy volviendo loco. Algo tan simple ha enlazar un adaptador personalizado a un ListView me está dando un dolor de cabeza.

Publica el código y explica:

MainActivity.java

package com.example.pruebalist; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private static String[] data = new String[] {"0","1","2","3"}; public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.v("MainActivity","Inside MainActivity"); setContentView(R.layout.main); ListView lstView = (ListView)findViewById(R.id.listNoticias); ArrayAdapter<String> adapter = new LstAdapter(this, R.layout.row, data); lstView.setAdapter(adapter); } } 

LstAdapter.java

 package com.example.pruebalist; import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class LstAdapter extends ArrayAdapter<String>{ private String[] mData; private Context mContext; int layoutResourceId; public LstAdapter(Context context, int textViewResourceId, String[] values) { super(context, textViewResourceId, values); mContext = context; mData = values; layoutResourceId = textViewResourceId; Log.v("LstAdapter","Inside LstAdapter"); } @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View v = convertView; Log.v("LstAdapter","Inside getView"); if(v==null){ LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); v = inflater.inflate(layoutResourceId, parent,false); } String item = mData[position]; if(item!=null){ TextView txtItem = (TextView)v.findViewById(R.id.texto); if(txtItem!=null){ txtItem.setText(item); } } return v; } } 

El ListView nunca se muestra. Y getView nunca se utiliza, logCat no muestra "Inside Getview".

¿Qué pasa?

El principal problema es

 @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } 

Cambia a

 @Override public int getCount() { // TODO Auto-generated method stub return mData.length; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return mData[arg0]; } 

Echa un vistazo a este tutorial de Vogella en la lista de vista y actividad de la lista , trate de utilizar ViewHolder en adaptador de lista, aumentará el rendimiento de su vista.

Esto se debe a que dejó la implementación predeterminada del método getCount() que devuelve 0, por lo que el Adaptador piensa que no hay elementos para mostrar en ListView .

Debe devolver mData.length

 @Override public int getCount() { return mData.length; } 

No ha implementado getCount() y getItemId(...) .

Sólo puede sacar esos métodos y usar los valores predeterminados si no planea necesitar implementación personalizada para ellos.

Sácalos por el momento y luego inténtalo.

La forma correcta de hacerlo es llamar a super(context, textViewResourceId, values) – que ya está haciendo. En ese caso, puede quitar completamente las getCount() y getItemId(...) . La clase de la que se derribó su Lista automáticamente devolverá los valores correctos.

  • Aclamaciones
  • Finalize () agotado el tiempo de espera después de 30 segundos
  • Dagger 2: Inyectar el parámetro introducido por el usuario en el objeto
  • ¿El método ArrayList.clear () libera memoria?
  • ¿Dónde está la vista previa del diseño de Android Studio?
  • Copiar directorio, sub directorios y archivos a la tarjeta sd - android
  • La mejor manera de realizar la comunicación entre actividades en una aplicación Android TabHost
  • Cómo agregar un proyecto para crear ruta de acceso en IntelliJ Idea
  • ¿Cómo enviar notificaciones a la aplicación de Android desde el servidor de Java mediante GCM?
  • ¿Cuál es la mejor práctica para compartir modelos entre un servidor API WEB y una aplicación cliente Android?
  • Uso de getSpectrum () en la librería Libgdx
  • Cómo obtener mi hotspot wifi ssid en mi sistema android actual
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.