尝试使用addHeaderView()
and addFooterView()
for a ListView
。如果我尝试使用在 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
有什么线索吗?
EDIT:
你根本做不到
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));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)