我可以先显示listfragment然后再加载列表吗?

时间:2017-10-29 01:25:30

标签: android android-listfragment

我有一个ListFragment和一个相关的适配器。

适配器实现AbsListView.OnScrollListener。简而言之,当调用OnScroll()方法时,适配器调用API服务并加载列表。

问题是当用户点击打开ListFragment的按钮时,在用户看到片段之前会有短暂的延迟。

我想更改设计,以便在单击按钮并显示“正在加载”消息后,ListFragment将立即显示。有没有人有任何建议?谢谢!

1 个答案:

答案 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);

                  ...
}