跳转至

使用

快速开始

<com.ave.vastgui.netstatelayout.NetStateLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/net_state_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!--页面其他内容-->

</com.ave.vastgui.netstatelayout.NetStateLayout>

切换页面状态

NetStateLayout 为你提供了种页面状态供你切换使用。

  • 展示网络加载页面

    mNetStateLayout.showLoading()
    
  • 展示空数据页面

    mNetStateLayout.showEmptyData()
    
  • 展示网络加载错误页面

    Version 1.1.1

    mNetStateLayout.showLoadingError()
    

    1.1.1 版本开始,可以将请求获取的代码和信息传给 showLoadingError 方法,例如:

    mNetStateLayout.showLoadingError(404, "目标地址不存在")
    
  • 展示网络错误页面

    Version 1.1.1

    mNetStateLayout.showNetError()
    

    1.1.1 版本开始,可以将请求获取的异常信息传给 showNetError 方法,例如:

    mNetStateLayout.showNetError(RuntimeException("网络不可用"))
    
  • 当加载成功时,可以调用 showSuccess 来显示页面。

    mNetStateLayout.showSuccess()
    

更新页面

Version 1.1.1

NetStateLayoutOnXXXListener 接口提供了 onXXXInflate 方法,在这里可以修改页面显示的内容,以修改默认页面 default_empty_data 显示的信息为例:

val netStateMgr = NetStateMgr(this).apply {
    setOnEmptyDataListener(object : OnEmptyDataListener {
        override fun onEmptyDataInflate(view: View) {
            val textView: MaterialTextView =
                (view as ConstraintLayout).children.first() as MaterialTextView
            textView.text = "请求到的数据为空"
        }
    })
}
mNetStateLayout.setNetStateMgr(netStateMgr)

设置页面点击事件

Version 1.1.1

NetStateLayoutOnXXXListener 接口提供了 onXXXClick 方法,在这里可以修改页面的点击事件,以网络不可用为例:

private val wifiSetting =
    registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
        ... 
    }

val netStateMgr = NetStateMgr(this).apply {
    setOnNetErrorListener(object : OnNetErrorListener {
        override fun onNetErrorClick() {
            wifiSetting.launch(Intent(Settings.ACTION_WIFI_SETTINGS))
        }
    })
}
mNetStateLayout.setNetStateMgr(netStateMgr)

自定义页面背景

NetStateLayout 允许你自定义状态页面,以自定义空数据页面为示例:

val netStateMgr = NetStateMgr(this).apply {
    setEmptyDataView(R.layout.page_empty_data_state)
}
mNetStateLayout.setNetStateMgr(netStateMgr)

示例代码

查看示例代码