无法加载 ListView 的内容时如何关闭 Android 的进度条?
Posted
技术标签:
【中文标题】无法加载 ListView 的内容时如何关闭 Android 的进度条?【英文标题】:How to dismiss Android's progress bar when failed to load a ListView's contents? 【发布时间】:2015-02-17 12:12:41 【问题描述】:我有一个扩展 RoboListFragment
的类,它使用管理器类来获取一些类的信息(我的模型中的访客)。我面临的问题是当这个管理器无法检索数据时,我想关闭显示的进度条。
以下是我的 Fragment 中最重要的部分:
public class GuestFragment extends RoboListFragment
// Lines omitted
private void loadGuest()
Log.d(GuestFragment.class.getSimpleName(), "Loading guest...");
this.guestManager.getGuest(new Callback<Guest>()
@Override
public void onSuccess(Guest guest)
Log.d(GuestFragment.class.getSimpleName(), "Guest loaded OK");
GuestFragment.this.createAdapter(guest);
@Override
public void onFailure(UmError ex)
// Here I want to dismiss the ProgressBar
Log.d(GuestFragment.class.getSimpleName(), "Guest failed");
GuestFragment.this.getListView().setEmptyView(new View(getActivity())); // This line wouldn't work
Toast.makeText(GuestFragment.this.getActivity(), "Error here!", Toast.LENGTH_LONG);
);
private void createAdapter(Guest guest)
// Lines omitted
if (guestExists && activityWasCreated)
ArrayAdapter adapter = new ProfilesAdapter(this.getActivity(), guest.getDeliveryProfiles());
this.setListAdapter(adapter);
编辑 #1:我尝试在我的 onFailure()
方法中添加这一行
GuestFragment.this.getListView().setAdapter(null)
但是没有用。
编辑#2:我也尝试在我的onFailure()
方法中添加它
GuestFragment.this.getListView().setEmptyView(null);
也没有用。
XML 非常简单:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:padding="@dimen/pLarge"
android:orientation="vertical"
tools:context=".fragment.GuestFragment">
<ListView
android:layout_
android:layout_
android:id="@id/android:list"
android:divider="@android:color/transparent"
android:dividerHeight="@dimen/fSmaller"/>
</LinearLayout>
如您所见,我根本没有定义任何 ProgressBar。有人告诉我,在设置适配器之前,Android 会显示此 ProgressBar(我没有更多详细信息),但我不知道如何为 ListView
设置一些空内容
我怎样才能做到这一点,以便在回调成功返回时隐藏 ProgressBar? 最好的问候。
【问题讨论】:
进度条在哪里设置? onFailure 尝试创建一个空的适配器 @Mou 我没有设置进度条。 @Rohit5k2 我尝试在onFailure()
中设置GuestFragment.this.getListView().setAdapter(null)
但也不起作用
你能试试这个GuestFragment.this.createAdapter(new Guest());或 GuestFragment.this.createAdapter(null);
【参考方案1】:
我犯了一个愚蠢的错误:(
而不是将null
设置为列表适配器,像这样(正确的方法):
GuestFragment.this.setListAdapter(null)
我试图获取ListView
并设置null
适配器,如下所示:
GuestFragment.this.getListView().setAdapter(null)
感谢您的 cmets!
【讨论】:
以上是关于无法加载 ListView 的内容时如何关闭 Android 的进度条?的主要内容,如果未能解决你的问题,请参考以下文章
在我的 CustomListAdapter 上实现 Filterable 接口后无法重新加载 ListView 内容
Android:Endless Scrolling listview 内容错误和 NullpointerException