一个ListView的多个空视图

时间:2017-03-08 15:41:19

标签: android android-layout listview

我有一个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。

0 个答案:

没有答案