2015-04-06 27 views
0

在我的活動中,我有一個ListView。 在這我試圖添加標題視圖列表視圖看起來不適合我。 當我添加使用addHeaderView()方法的標題視圖,它拋出試圖添加一個HeaderView到Android的ListView但我不能添加

java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called 

當我註釋掉listView.addHeaderView(header);,它工作正常。 但是在setAdapter()方法之前我叫addHeaderview()方法。我無法弄清楚爲什麼會出現這個錯誤。讓我知道我的代碼中有什麼錯誤。

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    TextView header= new TextView(this); 
    header.setText("Header"); 
    ListView listView = (ListView)findViewById(R.id.list_view); 
    listView.addHeaderView(header); 
    List<String> list = new ArrayList<String>(); 
    for (int i = 0; i < 20; i++) { 
     list.add("Row "+i); 
    } 
    listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list)); 
+0

我覺得你在代碼中設置一個頭在什麼地方做setAdapter,請張貼全班同學,如果可能的話 – 2015-04-06 07:52:20

+0

這是我的onCreate完整的代碼()方法@BhavikMehta。謝謝 – AvisSiva 2015-04-06 08:00:36

回答

2

我得到了它的傢伙。我在xml文件中添加了android:entries屬性。所以setAdapter()之前調用addHeaderView()方法。

 <ListView 
      android:id="@+id/confess_list_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:entries="@array/sample_array" 
      android:padding="@dimen/medium" 
      android:layout_margin="@dimen/medium" 
      android:background="#fbf8f8" 
      android:scrollbars="none"> 

     </ListView> 

當我從xml中刪除android:entries屬性時,它的工作正常。謝謝@Bhavik Mehta。

+0

很高興,我可以幫助:) – 2015-04-06 11:34:33

0

嘗試這樣的:

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_home); 
TextView header= new TextView(this); 
header.setText("Header"); 
ListView listView = (ListView)findViewById(R.id.list_view); 
listView.addHeaderView(header); 
List<String> list = new ArrayList<String>(); 
for (int i = 0; i < 20; i++) { 
    list.add("Row "+i); 
} 
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 
listView.setAdapter(adapter); 
+0

Thanx @Ravi Dev,我找到了我錯誤的地方。回答已發佈。 – AvisSiva 2015-04-06 08:13:44

0

它的工作對我來說是這樣的:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.list_id); 

    //code to add header and footer to listview 
    LayoutInflater inflater = getLayoutInflater(); 
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, listView, 
      false); 
    ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView, 
      false); 
    listView.addHeaderView(header, null, false); 
    listView.addFooterView(footer, null, false); 

    ArrayAdapter adapter = new ArrayAdapter(this, 
      android.R.layout.simple_list_item_1, numbers); 

    listView.setAdapter(adapter); 

} 
+0

Thanx @Nikhil Verma,我發現我錯在哪裏。回答已發佈。 – AvisSiva 2015-04-06 08:13:26

相關問題