blog.youkuaiyun.com/guohaiyang1…
自己应用的案例
此时用时都不需要判断是否是空,直接使用则就是非空。例:
fun showNetError(){
showView(netErrorView)
}
复制代码
下面是全部代码
import android.content.Context
import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import cn.zhiup.mobile.R
import com.zhiup.base.base.BaseWidget
/**
* 公共提示类,此类承载了界面上多数提示功能,数据为空,断网,等凡是列表或者整个界面都需要显示的提示。则需要用到此类
* 他比@PromptView 类更加灵活。可以任意增加子组件。
*/
class TipsView(ctx: Context,attr:AttributeSet) :BaseWidget(ctx,attr){
//提示类父容器
var container: FrameLayout?=null
//公用,无数据提示UI
var dataNullView:DataNullView?=null
get() {
if (field == null) {
field = DataNullView(context)
}
return field
}
//公用,网络错误提示UI
var netErrorView: NetErrorView?=null
get() {
if (field == null) {
field = NetErrorView(context)
}
return field
}
//学习界提示UI
var studyActionView:StudyActionView?=null
get() {
if (studyActionView == null) {
studyActionView = StudyActionView(context)
}
return studyActionView
}
override fun initView() {
container = view.findViewById(R.id.container)
}
override fun initInnerEvent() {
}
fun showDataNull(){
showView(dataNullView)
}
fun showNetError(){
showView(netErrorView)
}
fun showStudyAction(){
showView(studyActionView)
}
override fun getLayoutId() = R.layout.view_tips
private fun showView(v: View?){
if(container!=null&&v!=null){
container?.removeAllViews()
container?.addView(v, LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT))
}
visibility = View.VISIBLE
}
}
复制代码