2016-02-12 29 views
2

我想在listView中添加標題我嘗試像這樣我在這裏缺少id很好。 我正在使用這個片段。如何將listView標題添加爲自定義佈局

ListView lv; 

LinearLayout header = (LinearLayout) rootView.findViewById(R.id.header_layout); 

lv.addHeaderView(header); 
// APP is crashing here? 

logcat的

java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 
      at android.widget.RelativeLayout$DependencyGraph.findRoots(RelativeLayout.java:1732) 
      at android.widget.RelativeLayout$DependencyGraph.getSortedViews(RelativeLayout.java:1677) 
      at android.widget.RelativeLayout.sortChildren(RelativeLayout.java:381) 
      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:389) 
      at android.view.View.measure(View.java:17547) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
      at android.view.View.measure(View.java:17547) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
      at android.view.View.measure(View.java:17547) 
+1

不要你有適配器設置! – Nisarg

+0

應用程序崩潰 - 提供Log Cat。對不起,我們沒有得到應用程序崩潰原因的神聖夢想。 – Skynet

+0

Logcat請:) – user5716019

回答

7

我們可以添加標題,如下面的ListView:

LayoutInflater myinflater = getLayoutInflater(); 
ViewGroup myHeader = (ViewGroup)myinflater.inflate(R.layout.headerlayout, myListView, false); 
myListView.addHeaderView(myHeader, null, false); 

但是,根據你的錯誤,你可能在你的XML和你的java文件,您正在使用的LinearLayout採取相對佈局。

你還必須初始化你的ListView爲:

lv=(ListView)findViewById(R.id.yourlistview);` 
+0

感謝兄弟得到了你的觀點。 –

+1

ohh bro,wc,完成你的任務,繼續前進,祝你好運。 – user5716019

0

您需要在設置標題視圖之前初始化列表視圖。

像這樣

lv = (ListView) findViewById(R.id.list); 

那麼你就可以充氣頭視圖後添加標題視圖。

View head = (View) getActivity().getLayoutInflater().inflate(R.layout. header_layout, null); 
lv.addHeaderView(header); 
0

添加到您的適配器:

@Override 
    public boolean isEmpty() { 
     return false; 
    } 

添加到您的適配器,如果您有SectionedBaseAdapter:

@Override 
     public int getCountForSection(int section) { 

      switch (section) { 

       case 0: 
        return listPOJOInAdapter== null ? 1 : listPOJOInAdapter.size(); 

      } 

      return 1; 
     } 

,加入HeaderView後列表顯示, 嘗試設置ListView的Adapter。

希望它能幫助你!讓我知道你是否成功!