ListView没有被填充,getView()没有被调用

我有一些问题让我的列表视图显示在我正在写一个简单的应用程序。 出于某种原因,我的适配器类的getView()方法没有被调用。 但是,当在我的适配器类中调用getCount()时,它不返回0,而是实际返回正确的值。 我真的很困惑,为什么这不起作用。

这是我的活动:

 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(); } } 

这里是活动使用的布局:

 <?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> 

最后这里是我的适配器类:

 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; } } 

Solutions Collecting From Web of "ListView没有被填充,getView()没有被调用"

尝试将android:layout_height="fill_parent"更改为wrap_content 。 我相信listview从来没有得到显示,所以没有必要调用getView()

我知道这个问题已经有了答案。

然而,我有一个不同的根本原因和原来的问题类似的症状(getView()没有调用),因此我认为这是有益的,在这里为其他人有不同的根本原因。

http://hissain.in/wordpress/?p=659给&#x51FA;

“有时似乎notifyDataSetChanged()不会为你工作(因此getView()将不会被调用)。 原因可能是您的适配器失去对您的列表的引用 。 当你第一次初始化适配器时,它将引用你的数组列表并传递给它的超类。 但是,如果你重新初始化你现有的数组列表,它将失去参考,因此与Adapter的通信通道“

因此,不要重新初始化你的列表,而是在列表中使用clear()。

 list.clear(); // Right Thing to Do list = new List<T>(); // Wrong Thing to Do, will lose reference in the adapter