project gradle
dependencies { classpath 'com.android.tools.build:gradle:3.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
module gradle
apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt'
android { .... dataBinding { enabled = true }
...
}
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:27.0.2' implementation 'com.google.code.gson:gson:2.6.2' implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'com.android.support:recyclerview-v7:27.0.2' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
xml如下
<ImageView android:id="@+id/image" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" android:maxHeight="200dp" android:maxWidth="200dp" app:imageUrl="@{viewModel.entityModel.imgUrl}" />
然后再activity oncreate方法中:
setMyContentView(R.layout.activity_main) var model = EntityViewModel(); setVariable(model) model.getData(this);
接着看viewmodel
var entityModel:ObservableField<EntityModel> = ObservableField<EntityModel>( EntityModel()); fun getData(context:Context ) { //从网络获取数据 var json = FileUtils.getAssetString(context,"json1.json"); var gson = Gson(); var entityModel = gson.fromJson(json, EntityModel::class.java); this.entityModel.set(entityModel); }
//此方法是用来加载图片 xml中的ImageView属性 app:imageUrl="@{viewModel.entityModel.imgUrl}" @BindingAdapter("imageUrl") @JvmStatic fun loadImage( imageView:ImageView, imgUrl:String?){ Glide.with(imageView.getContext()).load(imgUrl).into(imageView); }
也可以拦截 android 控件的原始属性 比如TextView中的 android:text只要TextView text设置值之前都要执行以下方法
@BindingAdapter("android:text") @JvmStatic fun setText(tv:TextView ,str:String ){ tv.setText(str) Toast.makeText(tv.context,"str:"+str,Toast.LENGTH_LONG).show() }
model:
class EntityModel { var content:String?=null ; var inputStr:String?=null; var imgUrl:String?=null; var imgUrl1 :String?=null ; var innerModel:EntitySubModel?=null; }
很简单的:
具体请看项目源码:git@github.com:137403672/MVVMDemo.git
csdn:https://download.csdn.net/download/wangwei268/10421163