簡體   English   中英

Android ListView addHeaderView()nullPointerException用於在XML中定義的預定義視圖

[英]Android ListView addHeaderView() nullPointerException for predefined Views defined in XML

嘗試為ListView使用addHeaderView()addFooterView() 如果我嘗試使用我在XML中為頁眉或頁腳預定義的視圖,我會得到一個空指針異常。 但是,如果我使用代碼動態創建一個視圖,它工作正常......

// This doesn't work... nullPointerException
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = (TextView) findViewById(R.id.my_header);
lv.addHeaderView(header);

// This works fine
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = new TextView(this);
TextView.setHeight(30);
TextView.setText("my header text!");
lv.addHeaderView(header);

我的堆棧跟蹤:

Caused by: java.lang.NullPointerException
    at android.widget.ListView.clearRecycledState(ListView.java:522)
    at android.widget.ListView.resetList(ListView.java:508)
    at android.widget.ListView.setAdapter(ListView.java:440)
    at com.company.myapp.MyActivity.refreshList(MyActivity.java:85)
    at com.company.myapp.MyActivity.onCreate(MyActivity.java:37)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    ... 11 more

有線索嗎?

編輯:

你根本做不到

View header = findViewById(R.layout.headerView);
lst.addHeaderView(header);

這不起作用,因為傳入的視圖has to be inflated 簡而言之,當您在活動開始時執行setContentView時, android框架會自動對視圖進行膨脹並將其投入使用 為了擴展標題視圖,您只需要做的就是

View header = (View)getLayoutInflater().inflate(R.layout.headerView,null);
ls.addHeaderView(header);

最后,在設置標題視圖並運行應用程序后添加適配器。 您應該看到包含放入適配器的內容的標題視圖。

在我的情況下,這是有效的

View header = getLayoutInflater().inflate(R.layout.header, null); 
View footer = getLayoutInflater().inflate(R.layout.footer, null); 

ListView listView = getListView();  

listView.addHeaderView(header); 
listView.addFooterView(footer);     

setListAdapter(new ArrayAdapter<String(this,android.R.layout.simple_list_item_single_choice,android.R.id.text1, names)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM