如何在加载数据时在AsyncTask上实现旋转ProgressBar?

时间:2018-01-16 09:59:31

标签: java android android-asynctask progress-bar

假设我有这段代码:

XML

 <FrameLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <android.support.v7.widget.RecyclerView
        android:id="@+id/photo_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

 </FrameLayout>

程序

  private class FetchItemsTask extends AsyncTask<Void, Void, List<GalleryItem>> {
    private String mQuery;


    public FetchItemsTask(String query) {
        mQuery = query;
    }
    @Override
    protected List<GalleryItem> doInBackground(Void... params) {
        if (mQuery == null) {
            return new FlickrFetchr().fetchRecentPhotos();
        } else {
            return new FlickrFetchr().searchPhotos(mQuery);
        }
    }


    @Override
    protected void onPostExecute(List<GalleryItem> galleryItems) {
        mItems = galleryItems;
        setupAdapter();

    }
}

当AsycnTask在后台运行时,如何实现旋转ProgressBar并隐藏RecyclerView?很抱歉,如果这看起来像一个简单的问题,但我发现的唯一答案是使用ProgressDialog,它在API 26中已弃用。提前感谢您。

2 个答案:

答案 0 :(得分:1)

覆盖预执行方法并显示进度对话框。

答案 1 :(得分:1)

您可以在onPreExecute()中显示微调器并将其隐藏在onPostExecute()

class Your_Class extends AsyncTask<...>
{
    ProgressBar pb;
    Your_Class(){
    // initialize pb
    }
    Protected void onPreExecute(){
        // show progressbar
    }
    protected void onPostExecute(Bitmap image){
        // hide progressbar
    }
}