我有一个ListFragment和一个相关的适配器。
适配器实现AbsListView.OnScrollListener。简而言之,当调用OnScroll()方法时,适配器调用API服务并加载列表。
问题是当用户点击打开ListFragment的按钮时,在用户看到片段之前会有短暂的延迟。
我想更改设计,以便在单击按钮并显示“正在加载”消息后,ListFragment将立即显示。有没有人有任何建议?谢谢!
答案 0 :(得分:0)
是的,您可以在加载时为节目添加视图,例如显示ProgressBar。
首先,您需要使用LoaderManager扩展Custom SimpleCursorAdapter
public class CustomSimpleCursorAdapter extends SimpleCursorAdapter implements LoaderManager.LoaderCallbacks<Cursor>
1.添加全局视图
View startview;
2.Inside构造函数构建进度条并设置LoaderManager的回调
//Build the progressBar
ProgressBar progressBar = new ProgressBar(this.mContext);
progressBar.setLayoutParams(new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT, Gravity.CENTER));
progressBar.setIndeterminate(true);
//Set startview for future call and add to root view
startview = progressBar;
root.addView(startview);
//Set Interface the LoaderManager will call to report
context.getLoaderManager().initLoader(0,null,this);
3.覆盖onLoadFinished以在完成后删除进度条视图。
@Override public void onLoadFinished(Loader<Cursor> loader,Cursor data) {
if (startview!=null) {
if (startview.getParent()!=null) {
((ViewGroup)startview.getParent()).removeView(startview);
}
}
}
4。设置使用自定义光标适配器
全球
protected CustomSimpleCursorAdapter mAdapter;
覆盖onCreate for set使用自定义适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mAdapter = new CustomSimpleCursorAdapter(context, layout, c, from,
to, flags);
listview.setAdapter(mAdapter);
...
}