kotlin幕后字段和幕后属性解析

·  阅读 278

blog.csdn.net/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
    }
}
复制代码
收藏成功!
已添加到「」, 点击更改