我想保留这些方法:
setListShown(true);
setListShownNoAnimation(true);
但如果我用
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
充气Fragment
使用自定义样式布局,无法使用以前的方法,并显示此异常:
07-30 20:17:46.937: E/AndroidRuntime(1374): Caused by: java.lang.IllegalStateException: Can't be used with a custom content view
07-30 20:17:46.937: E/AndroidRuntime(1374): at android.support.v4.app.ListFragment.setListShown(ListFragment.java:282)
07-30 20:17:46.937: E/AndroidRuntime(1374): at android.support.v4.app.ListFragment.setListShown(ListFragment.java:258)
那么,可能的解决方案是什么?
EDIT:
The Fragment
使用加载器来填充它的ListView
来自数据库。这就是我想保留这些方法的原因,这里需要它们:
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
}
}
最简单的解决方案是根据以下内容制作我自己的代码ListFragment
源代码中,还将进度小部件添加到布局中以显示相同的效果。现在,我将按照别人告诉我的那样删除这些行。如果我进行修改,我会将其粘贴到此处。
只需更换原来的即可ListView
和你的CustomListView
内布局onCreateView()
。为我工作。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = super.onCreateView(inflater, container,
savedInstanceState);
ListView lv = (ListView) layout.findViewById(android.R.id.list);
ViewGroup parent = (ViewGroup) lv.getParent();
// Remove ListView and add CustomView in its place
int lvIndex = parent.indexOfChild(lv);
parent.removeViewAt(lvIndex);
LinearLayout mLinearLayout = (LinearLayout) inflater.inflate(
R.layout.custom_list, container, false);
parent.addView(mLinearLayout, lvIndex, lv.getLayoutParams());
return layout;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)