ListView no se llena, getView () no se recibe

Estoy teniendo algunos problemas para que mi listview aparezca en una simple aplicación que estoy escribiendo. Por alguna razón, el método getView() de mi clase de adaptador no se llama. Sin embargo, cuando getCount() se llama en mi clase de adaptador no está devolviendo 0, pero de hecho está devolviendo el valor adecuado. Estoy realmente confundido en cuanto a por qué esto no está funcionando.

Aquí está mi Actividad:

 import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class CardListActivity extends Activity { protected ListView lv; protected int nCards = 12; protected String[] cardList = new String[nCards]; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cardlist); this.loadCardStrings(); lv = (ListView) findViewById(R.id.CardList_ListView); EditorListAdapter adapter = new EditorListAdapter(this, this.cardList); lv.setAdapter(adapter); } protected void loadCardStrings(){ cardList = getResources().getStringArray(R.array.card_list); Util.logD("Created the string arrays with:" + Integer.toString(cardList.length) + " items."); } public void onStart(){ super.onStart(); } public void onResume(){ super.onResume(); } public void onPause(){ super.onPause(); } public void onStop(){ super.onStop(); } public void onDestroy(){ super.onDestroy(); } } 

Aquí está el diseño utilizado por la actividad:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/CardList_LinearLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Hello"/> <ListView android:id="@+id/CardList_ListView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 

Finalmente, aquí está mi clase de adaptador:

 import android.app.Activity; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class EditorListAdapter extends BaseAdapter { Activity context; String names[]; public EditorListAdapter(Activity context, String[] title) { super(); this.context = context; this.names = title; } public int getCount() { Util.logD("EditorListAdapter.getCount() ret:" + Integer.toString(names.length)); return names.length; } public Object getItem(int position) { Util.logD("EditorListAdapter.getItem()"); return null; } public long getItemId(int position) { Util.logD("EditorListAdapter.getItemId()"); return 0; } public View getView(int position, View convertView, ViewGroup parent) { TextView t; if (convertView == null) t = new TextView(parent.getContext()); else t = (TextView) convertView; t.setText(this.names[position]); convertView = t; Util.logD("EditorListAdapter.getView() + " + t.getText().toString()); return convertView; } // Added per K-Ballo suggestion public int getViewTypeCount(){ return 1; } public int getItemViewType(){ return 0; } } 

Intente cambiar el android:layout_height="fill_parent" para el textview a wrap_content en wrap_content lugar. Creo que el listview nunca se muestra, por lo que nunca es necesario llamar a getView ()

Sé que ya hay una respuesta a esta pregunta.

Sin embargo, estoy teniendo una causa raíz diferente y la razón con síntomas similares a la pregunta original (getView () no se llama), por lo tanto creo que es beneficioso para documentar aquí para otras personas que tienen diferentes causas.

Según lo dado por http://hissain.in/wordpress/?p=659

"A veces parece que notifyDataSetChanged () no funcionará para usted (y por lo tanto getView () no se llamará). La razón podría ser su adaptador pierde referencia a su lista . Cuando inicializa el adaptador, toma una referencia de la lista de array y pasa a su superclase. Pero si reinicializa su lista de array existente pierde la referencia, por lo tanto, el canal de comunicación con el adaptador "

Por lo tanto, nunca reinicialice su lista, sino que utilice clear () en la lista.

 list.clear(); // Right Thing to Do list = new List<T>(); // Wrong Thing to Do, will lose reference in the adapter 
  • Sincronización de dos ListViews lado a lado de Android
  • Deslice la animación expandida en android
  • Sólo en algunos teléfonos, ListView no se actualiza después de notifyDataSetChanged ()
  • ¿Hay algo como NSDictionary en android?
  • ¿Cómo puedo probar ListView con Robolectric 2.2? Dice que android.widget.ListView todavía no está implementado
  • ¿Cómo iniciar adecuadamente una barra de acción contextual multiselección para ListFragment (tener problemas)
  • Cómo implementar correctamente un adaptador para un ListView
  • cómo agregar varias vistas de imagen en la fila de vista de lista con vista de desplazamiento horizontal
  • ListActivity no se actualiza a medida que los datos llegan
  • DialogFragment con ListView personalizado
  • ¿Cómo puedo poner un ListView en un ScrollView sin colapsar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.