我的应用程序中有一个问题,我正在动态地将标题视图设置为listview
但是我得到了以下错误,我有两个活动,A和B根据我的条件我将标题视图设置为{{1}当我在A活动中设置headerview它工作正常但是当A活动假我的条件并转到B活动那里我的条件是真的然后来一个活动我需要添加标题视图我得到错误..... ...........我曾尝试添加onStart(),onResume()方法,但仍然遇到同样的错误.....如何修复
Java代码
listview
错误消息
on Strat()
{
if (mDrawerList.getHeaderViewsCount()<1) {
TextView headerText = new TextView(mContext);
headerText.setGravity(Gravity.CENTER);
headerText.setTextColor(getResources().getColor(R.color.white_color));
headerText.setPadding(20, 12, 20, 12);
headerText.setTextSize(18);
headerText.setText(mSessionManager.getUserName());
mDrawerList.addHeaderView(headerText);
}
adapter = new NavDrawerListAdapter(mContext, navDrawerItems);
mDrawerList.setDividerHeight(2);
mDrawerList.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
答案 0 :(得分:8)
请查看addHeaderView
的文档。
特别注意注释:
注意:首次引入时,只能在使用setAdapter(ListAdapter)设置适配器之前调用此方法。从KITKAT开始,可以随时调用此方法。如果ListView的适配器没有扩展HeaderViewListAdapter,它将被WrapperListAdapter的支持实例包装。
答案 1 :(得分:8)
我在http://code.neenbedankt.com/note-to-self-listfragment-and-header-views/找到了这个简单的解决方法:
@Override
public void onDestroyView() {
super.onDestroyView();
setListAdapter(null);
}
只需将其添加到ListFragment类即可 它适用于2.3.3和4.2.2
答案 2 :(得分:4)
怎么样:
ListAdapter adapter = listView.getAdapter();
listView.setAdapter(null);
listView.addHeaderView(headerView);
listView.setAdapter(adapter);
这里唯一的问题是它会重新启动滚动条位置。但是,在设置适配器之后没有其他方法可以添加headerView。
答案 3 :(得分:0)
需要检查列表是否已经设置了适配器。
if (mDrawerList.getAdapter==null) {
// add the header view here.this will work
}
答案 4 :(得分:-1)
list.setAdapter(null);
list.addHeaderView(loading.getView());