我有一个相当流行的场景,其中有一个包含进度条和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);
}
}
});
// ...
}
由于
答案 0 :(得分:1)
最好在onCreateView()中初始化进度条,而不是使用view.findViewById(),因为这是一项昂贵的操作。