URL提取完成时禁用进度条:标准方案

时间:2015-10-19 19:13:50

标签: android android-fragments retrofit

我有一个相当流行的场景,其中有一个包含进度条和ListView的片段。我想在使用Retrofit获取数据后填充ListView。现在,一旦响应回来,就需要使进度条不可见。

onCreateView()中膨胀的片段布局视图存储为成员变量并使用该变量禁用onResponse()中的进度条(回调是否在{中创建)是不是一个好主意{1}}),当获取成功时?

片段布局:

onCreate()

的onCreate():

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/source_items_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="5dp">


    <com.gc.materialdesign.views.ProgressBarCircularIndeterminate
            android:id="@+id/progress_bar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:background="#1E88E5"
            android:layout_gravity="center_horizontal"/>

    <ListView android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/source_list"/>

</FrameLayout>

onCreateView():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mItemList = new ArrayList<SourceItem>();

    RestClient.get().getSources().enqueue(new Callback<SourceItemList>() {
        @Override
        public void onResponse(Response<SourceItemList> response, Retrofit retrofit) {

            if (response.isSuccess()) {

                disableProgressBar();

                //...
            }
        }

        @Override
        public void onFailure(Throwable t) {
            disableProgressBar();
            return;
        }

        private void disableProgressBar() {
            if (mView != null) {
                mView.findViewById(R.id.progress_bar).setVisibility(View.INVISIBLE);
            }
        }
    });

    // ...
}

由于

1 个答案:

答案 0 :(得分:1)

最好在onCreateView()中初始化进度条,而不是使用view.findViewById(),因为这是一项昂贵的操作。