【发布时间】:2014-06-04 10:39:06
【问题描述】:
我刚刚注意到,我看到的每个示例都使用ListFragment 并调用
adapter = new Adapter(context);
setListAdapter(adapter);
getLoaderManager().initLoader(0, null, this);
完全按照这个顺序。
当我使用Fragment,然后这样做
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new Adapter(mContext);
getLoaderManager().initLoader(0, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
listView = (ListView) view.findViewById(R.id.listview);
listView.setAdapter(adapter);
return view;
}
它不起作用。我在onLoadFinished(Loader<Cursor> loader, Cursor cursor) 内部追踪,发现adapter 不知道它的ListView,所以swapCursor(newCursor) 没有效果。
但是当我这样做时,它会起作用。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
listView = (ListView) view.findViewById(R.id.listview);
adapter = new Adapter(mContext);
listView.setAdapter(adapter);
getLoaderManager().initLoader(0, null, this);
return view;
}
我觉得我知道问题所在,但我需要一个解释来确认。谢谢。
【问题讨论】:
标签: android android-listview android-loadermanager android-loader