Kotlin中使用DataBinding的简单实现

1.配置如下:

Project build_gradle 

buildscript {
    ext.kotlin_version = '1.2.21'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

app build_gradle 

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
... ...
dataBinding {
        enabled true
    }
}
kapt {
    generateStubs = true
}
dependencies {
//DataBind
    kapt "com.android.databinding:compiler:2.3.0"
}

2. 使用如下:

 

 

 

    2.1 在Activity中使用

 

DataBindingUtil.setContentView(this@MainActivity, R.layout.activity_main)

 

mContentView.userInfo = UserInfo("马齐", "18", "188")

 

 



    

        
      
        
    

    

        

        

        

        
    
   

2.2 在Fragment中使用

 

fun toInit() {
    mContentView.endModel = EndModel(Calendar.getInstance().timeInMillis,
            "点我有惊喜", false)
    mContentView.imageUrl = "http://images.csdn.net/20150810/Blog-Image%E5%89%AF%E6%9C%AC.jpg"
    mContentView.changeTime.onClick {
        mContentView.endModel.time = Calendar.getInstance().timeInMillis
        mContentView.endModel.showRed = !mContentView.endModel.showRed
        mContentView.endModel.showView.set(!mContentView.endModel.showView.get())
    }
  //我使用的是IRecyclerView库 看起来是不是很简单?
    mContentView.layoutManager = LinearLayoutManager(context)
    val baseReclyerViewAdapter = object : CommonRecycleViewAdapter(context, R.layout.item_page) {
        override fun convert(helper: ViewHolderHelper?, t: PageModel?, position: Int) {

        }
    }
    mContentView.adapter = baseReclyerViewAdapter
    for (i in 1..10) {
        baseReclyerViewAdapter.add(PageModel())
    }
}


    
    
        
    
        
    
        
        
        
        
        
    
        
    
        
    

    
    
        
     
        
    
    
        
    
        
 %s, %s//组合字符串
 
#999999
#FF244F
#e5e5e5

Utils.kt

 

fun long2Data(data: Long): String = SimpleDateFormat("yyyy-MM-dd").format(Date(data))

BindingUtil.kt

这个BindingUtil 是可以随便名明的DataBinding会自动寻找到该方法

 

@BindingAdapter("bind:image")
fun ImageView.imageLoader(url: String) {
    Glide.with(context).load(url).into(this)
}
//这个BindingConversion真的不实用  如果参数为String或者Int类型将会造成 其他不想使用该方法的布局也被迫使用
不推荐
//@BindingConversion
//fun convertDate(date: Date): String {
//    return SimpleDateFormat("yyyy-MM-dd").format(date)
//}

 

最后 在我GitHub上有源代码  https://github.com/goodluckforme/APiCloudDemo

 

自己学习也方便大家。

持续更新中...

 

PS:这是基于我的MVP模板写的,别忘了我的一键 MVP快速开发神器,欢迎来Start

GitHub https://github.com/goodluckforme/muc_mvp/tree/second

Blog http://blog.csdn.net/qq_20330595/article/details/79269581

 

AS3.3以后 Databinding用法有所更新

请参考:新版Databinding基础教程

 

你可能感兴趣的:(koltin,DataBinding)