bro*_*oli 34 android listview header adapter android-fragments
我在列表中设置自定义标题时遇到了一些麻烦.
我正在使用自定义适配器创建ListFragment.我的列表工作正常,但我正在试图找出片段的生命周期中附加标题的位置.
我知道在设置适配器之前必须添加标头.
我尝试在onActivityCreated中添加我的标题,但是每次我的Fragment从backstack返回时都会调用它,并且因为我还在onActivityCreated中设置了我的适配器,所以它失败了.
我尝试在onCreate中添加它,但视图层次结构在生命周期的那个阶段不可用.
我尝试在onCreateView中添加它,但我无法将从inflate返回的视图转换为ListView.所以我无法将标题添加到香草视图中.
有什么想法吗?
ugo*_*ugo 34
我不知道你是否解决了你的问题,但这里有一个对我有用的解决方案:
不要打电话给ListFragment.setListAdapter()你ListFragment.onCreate().确保你有一个可以保存标题视图的字段变量,可能是这样的:
View mheaderView;
Run Code Online (Sandbox Code Playgroud)
然后在你的ListFragment.onCreateView(),膨胀标题View并将其分配给你的变量,如下所示:
View list_root = inflater.inflate(R.layout.fragment_list, null);
// Get the list header - to be added later in the lifecycle
// during onActivityCreated()
mheaderView = inflater.inflate(R.layout.list_header, null);
return list_root;
Run Code Online (Sandbox Code Playgroud)
最后,在你ListFragment.onActivityCreated() 现在可以打电话ListFragment.getListView().addHeaderView().基本上是这样的:
super.onActivityCreated(savedInstanceState);
if (mheaderView != null) this.getListView().addHeaderView(headerView);
// Don't forget to now call setListAdapter()
this.setListAdapter(listAdapter);
Run Code Online (Sandbox Code Playgroud)
小智 32
此解决方案适用于屏幕翻转:
在onActivityCreated()中:
getListView().addHeaderView(mHeaderView);
if (mMyAdapter == null) {
mMyAdapter = new MyAdapter(getActivity(), null);
}
setListAdapter(mMyAdapter);
Run Code Online (Sandbox Code Playgroud)
在onDestroyView()中
setListAdapter(null);
Run Code Online (Sandbox Code Playgroud)
Jak*_*son 18
我的解决方案
public void onActivityCreated(Bundle savedInstanceState) {
setListAdapter(null);
getListView().addHeaderView(mHeader);
setListAdapter(mAdapter);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23168 次 |
| 最近记录: |