我正在构建一个使用REST接口来获取数据的应用程序。通常,我会调用setProgressBarIndeterminateVisibility(true);
让用户知道应用正在等待数据。但是,这似乎是deprecated:
AppCompat中不再提供进度条。
在查看GMail应用程序时,我看到有一个不确定的进度条(加载图标)全屏,数据即将到来。
我该如何正确实现?部分活动从ListViewActivity
延长,并在没有可用数据时使用setEmptyView
显示简单的TextView
。有些是更复杂的布局。
我可以考虑使用setVisibility(View.GONE)
,但想知道这是否是“正确”的做法。
答案 0 :(得分:1)
是。这是正确的方法。只需将所有内容布局在XML上,并在必要时在progressBar上调用setVisibility
。
通常有两种方式可以使用"当"打电话。
onSuccess()
,onStartLoading()
)ListView
所做的)。如下代码:
@Override
protected void onStart(){
super.onStart()
observer.onChanged();
adapter.registerDataSetObserver(observer);
}
@Override
protected void onStop(){
super.onStop()
adapter.unregisterDataSetObserver(observer);
}
private DataSetObserver observer = new DataSetObserver(){
@Override
public void onChanged() {
progress.setVisibility(adapter.getCount()==0?View.VISIBLE:View.GONE);
}
}
答案 1 :(得分:0)
将您的内容布局包装到FrameLayout
。添加到FrameLayout
这样的内容:
<LinearLayout
android:id="@+id/loading_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="invisible">
<ProgressBar
android:layout_width="50dp"
android:layout_height="50dp"
android:indeterminate="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Loading data..."/>
</LinearLayout>
然后使用.setVisibility(View.VISIBLE) / .setVisibility(View.INVISIBLE)