Android的ListView的addHeaderView()NullPointerException异常在XML中定义predefined浏览 [英] Android ListView addHeaderView() nullPointerException for predefined Views defined in XML
问题描述
尝试使用 addHeaderView()
和 addFooterView()
为的ListView
。如果我尝试使用一种观点认为,我已经pdefined在XML中的页眉或页脚$ P $,我得到一个空指针异常。不过,如果我使用code动态地创建一个视图,它工作得很好...
Trying to use addHeaderView()
and addFooterView()
for a ListView
. If I try to use a View that I've predefined in XML for either the header or footer, I get a null pointer exception. However, if I dynamically create a View using code, it works fine...
// 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);
我的堆栈跟踪:
My stack trace:
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);
这是不行的,因为这是被传递有观点被充气
。在当你做一个简单地说的setContentView
在你活动开始的 Android框架自动充气的观点,并将其使用。为了抬高你的头视图,所有你需要做的就是
This will NOT work because the view which is being passed in has to be inflated
. In a nutshell when you do setContentView
at the beginning of your activity the android framework automatically inflates the view and puts it to use. In order to inflate your header view, all you have to do is
View header = (View)getLayoutInflater().inflate(R.layout.headerView,null);
ls.addHeaderView(header);
最后,你设置了标题视图并运行应用程序后添加适配器。你应该可以看到你的头视图,你把你的适配器的内容。
lastly, add your adapter after you’ve set the header view and run the application. You should see your header view with the content you put into your adapter.
在我的情况下,这个工程
In my case, this works
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));
这篇关于Android的ListView的addHeaderView()NullPointerException异常在XML中定义predefined浏览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!