我有一个ListView,其中一个空视图显示了一个进度条,表明该应用仍在加载。我想制作第二个空视图,告诉用户在此过程中是否存在错误。
我尝试了2种相对布局,但是当我需要设置“错误视图”时,它只是忽略它并只显示“加载视图”。
所以我尝试使用单一布局,使用我的进度条和其他用于制作错误屏幕的内容,其中VISIBILITY:GONE。但是,当将VISIBILITY置于VISIBLE时,我收到一个NullPointerException。
我真的不知道我应该怎样做才能使它有效......谢谢!
修改 这是我现在的布局(VISIBILITY尝试)在ListView
下<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/post_list_loading">
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_centerInParent="true"
android:id="@+id/post_list_loading_progressbar"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="visible" />
<ImageView
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/post_list_error_image"
android:visibility="gone"
android:id="@+id/post_list_error_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/post_list_error_image"
android:text="Error Text"
android:maxLines="2"
android:ellipsize="end"
android:layout_marginLeft="50dp"
android:layout_centerHorizontal="true"
android:textSize="21dp"
android:id="@+id/post_list_error_text"
android:layout_marginTop="5dp"
android:visibility="gone"
/>
<Button
android:id="@+id/post_list_error_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/post_list_error_text"
android:text="Ricarica"
android:layout_centerHorizontal="true"
android:layout_marginLeft="50dp"
app:backgroundTint="@color/colorPrimary"
android:textColor="@color/colorWhite"
android:visibility="gone"
/>
</RelativeLayout>
我尝试的第一种方法是将进度条之后的所有内容放在另一个RelativeLayout中。
所以我的想法是创建一个函数来在两个视图之间切换,使用Visibility设置进行播放。
public void emptyViewManager(Boolean isError, String errorMessage)
{
// [...]
if (isError == true)
{
// Error View
emptyView_progress.setVisibility(View.GONE);
emptyView_errorImage.setVisibility(View.VISIBLE);
emptyView_errorText.setVisibility(View.VISIBLE);
emptyView_errorButton.setVisibility(View.VISIBLE);
emptyView_errorText.setText(errorMessage);
}
else
{
// Loading View
emptyView_progress.setVisibility(View.VISIBLE);
emptyView_errorImage.setVisibility(View.GONE);
emptyView_errorText.setVisibility(View.GONE);
emptyView_errorButton.setVisibility(View.GONE);
}
}
但这不起作用,因为当App到达setVisibility函数时,我有一个NullPointerException。