Tag: android databinding

替换Kotlin中的java通用接口进行数据绑定

我开始认识Kotlin作为Android开发人员。 在制作android应用程序时,我习惯于使用Databinding,retrolambda等等。现在我在如何解决Kotlin中的以下情况方面有些迷茫。 我通常会这样做在java中 我有一个Adapter (扩展RecyclerView.Adapter )的RecyclerView显示BluetoothDevice列表。 通常,我所有的项目都有一个通用接口TypedClickListener,它将返回用户点击的listitem的T对象。 像这样: 通用接口: public interface TypedClickListener<T> { void onClick(T t); } PairedDeviceAdapter的构造函数 public PairedDeviceAdapter(Context context, BluetoothDevice[] devices, TypedClickHandler<BluetoothDevice> handler){ mContext = context; mDevices = devices mClickHandler = handler; } 适配器的onBindViewHolder :(持有者包含数据绑定布局) public void onBindViewHolder(DatabindViewHolder holder, Int position) { holder.getBinding().setVariable(BR.device, mDevices[position]); holder.getBinding().setVariable(BR.handler, mClickHandler); } 布局本身: <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.bluetooth.BluetoothDevice"/> […]

使用Kotlin进行数据绑定会导致Resources $ NotFoundException

上下文 我正在使用一个利用数据绑定的库来通过BindingAdapter在任何View上定义一个自定义属性: @BindingAdapter({"attribute"}) public static void bindAttribute(@NonNull View view, String attribute) {…} 这使我可以定义由库在运行时处理的自定义属性: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:algolia="http://schemas.android.com/apk/res-auto"> <LinearLayout <!– … –> android:orientation="horizontal"> <ImageView <!– … –> algolia:attribute='@{"objectID"}'/> </LinearLayout> </layout> 这个视图然后被用作子类RecyclerView的ViewHolder的itemLayout 。 所有这些在我的Java应用程序中工作正常。 问题 我开始在Kotlin建立一个类似的应用程序。 要使用数据绑定,我按照文档的指南,并添加以下内容: // ./app/build.gradle apply plugin: 'kotlin-kapt' android { dataBinding { enabled true } … } dependencies { kapt "com.android.databinding:compiler:$plugin_version" […]

Android DataBinding:Kotlin中的@BindingAdapter不识别lambda表达式

这是我的BindingAdapter : @BindingAdapter(value = *arrayOf("bind:commentsAdapter", "bind:itemClick", "bind:avatarClick", "bind:scrolledUp"), requireAll = false) fun initWithCommentsAdapter(recyclerView: RecyclerView, commentsAdapter: CommentsAdapter, itemClick: (item: EntityCommentItem) -> Unit, avatarClick: ((item: EntityCommentItem) -> Unit)?, scrolledUp: (() -> Unit)?) { //Some code here } initWithCommentsAdapter是一个顶级的函数 这是我的布局(一个重要部分): <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> <variable name="viewModel" type="some.example.path.CommentsViewModel"/> <variable name="commentsAdapter" type="some.example.path.CommentsAdapter"/> </data> <android.support.v7.widget.RecyclerView … bind:avatarClick="@{(item) -> viewModel.avatarClick(item)}" bind:itemClick="@{viewModel::commentClick}" bind:commentsAdapter="@{commentsAdapter}" […]

用新的kotlin 1.1构建错误,kapt不能解析数据绑定参数

我更新了我的项目从android studio 2.2到android studio 2.3,并将项目从kotlin 1.06增加到kotlin 1.1 这是我得到的错误 :app:javaPreCompileDebug :app:transformClassesAndDataBindingWithDataBindingMergeArtifactsForDebug UP-TO-DATE :app:compileDebugKotlin w: The '-d' option with a directory destination is ignored because '-module' is specified :app:compileDebugJavaWithJavac Processor path was modified by kapt. Previous value = /home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.1.0/ef03cfed144ff47eed2cab1f7be4381bc18a6237/kotlin-stdlib-jre7-1.1.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/android/databinding/compilerCommon/2.3.0/compilerCommon-2.3.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/home/harisvsulaiman/Sdk/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.1/constraint-layout-solver-1.0.1.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar:/home/harisvsulaiman/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.2.0/support-annotations-25.2.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.0/96a07041a11a09cf578892932d7511e1e11e3b6c/kotlin-stdlib-1.1.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/android/databinding/baseLibrary/2.3.0/baseLibrary-2.3.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.airbnb.android/epoxy-annotations/1.7.5/509abda14719aa31f55123c9a757bdadc8f45818/epoxy-annotations-1.7.5.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/io.realm/realm-annotations-processor/3.0.0/61c2ac9e7a068736558e69d585cfa777b35058b2/realm-annotations-processor-3.0.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/android/tools/annotations/24.5.0/annotations-24.5.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/9e9eeaf9948ee4d6c3ab354e8dc14368f16994a4/glide-3.7.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.6/de0c509ae6c9db5b5b6004a9d102c92708346f7c/rxjava-1.2.6.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.11.0/840897fcd7223a8143f1d9b6f69714e7be34fd50/okio-1.11.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/adapter-rxjava/2.2.0/d80514b6f44f0c4c6234e2d67fea783a25e77275/adapter-rxjava-2.2.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/android/databinding/compiler/2.3.0/compiler-2.3.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/io.realm/realm-annotations/3.0.0/32a01bbb8cb421b6d53d7a102412142b0391c8c7/realm-annotations-3.0.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/retrofit/2.2.0/41e67dba73c3347e4503761642c39d0e06ca1f2/retrofit-2.2.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.6.0/69edde9fc4b01c9fd51d25b83428837478c27254/okhttp-3.6.0.jar:/home/harisvsulaiman/.android/build-cache/478fd1ace0e77af57c87f42a281aed180d5ce276/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/d7d6ec093cb49766f796118979b331d6f5c2b4c4/output/jars/classes.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/io.realm/realm-annotations/3.0.0/32a01bbb8cb421b6d53d7a102412142b0391c8c7/realm-annotations-3.0.0.jar:/home/harisvsulaiman/.android/build-cache/17205aea1b3195cf38fb66c2e060ee4beed141f8/output/jars/classes.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/adapter-rxjava/2.2.0/d80514b6f44f0c4c6234e2d67fea783a25e77275/adapter-rxjava-2.2.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/retrofit/2.2.0/41e67dba73c3347e4503761642c39d0e06ca1f2/retrofit-2.2.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.6.0/69edde9fc4b01c9fd51d25b83428837478c27254/okhttp-3.6.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.11.0/840897fcd7223a8143f1d9b6f69714e7be34fd50/okio-1.11.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.6/de0c509ae6c9db5b5b6004a9d102c92708346f7c/rxjava-1.2.6.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/9e9eeaf9948ee4d6c3ab354e8dc14368f16994a4/glide-3.7.0.jar:/home/harisvsulaiman/.android/build-cache/6249fbc26c3c324164d6bccd213e772dbffabab8/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/00346f3603afd369923753ca5b3574b3cbd68913/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/44456db0af44370448077b85155ec1b111460aaf/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/ab1b9ebddb2122246c96bfd338f92a2af4329445/output/jars/classes.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/com.airbnb.android/epoxy-annotations/1.7.5/509abda14719aa31f55123c9a757bdadc8f45818/epoxy-annotations-1.7.5.jar:/home/harisvsulaiman/.android/build-cache/fb128d6e98efde38d1b59985fb85f2eee1b186eb/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/c9550d2fd003ae92d1406c8c46f2b35cffe031ce/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/08e46ece36546bbc2b85ffa90c6a8a4cf3bbab10/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/b293042c81288354130e748246586e2669e423d1/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/6a84f4dc5c9dda9b0a661c34b982f15791783194/output/jars/classes.jar:/home/harisvsulaiman/Sdk/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.1/constraint-layout-solver-1.0.1.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.1.0/ef03cfed144ff47eed2cab1f7be4381bc18a6237/kotlin-stdlib-jre7-1.1.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.0/96a07041a11a09cf578892932d7511e1e11e3b6c/kotlin-stdlib-1.1.0.jar:/home/harisvsulaiman/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/harisvsulaiman/.android/build-cache/79467da2ee5fd2328774a23645475ecb9d0946fd/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/02c10559b235748437a45d6ca44f6c5e5230c4e9/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/82bf4ec6a1051c7130958118c35d8fb99643c133/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/8dd8873d08fda228f6ea3117e6073fd14e35a5d4/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/8fc507ef1c90eab75de9d0123ad4b7535753f320/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/5fb2bef0cb0bba8cf7f981cadcf1cf142a325276/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/0727c2e3f4507058ea7ae52687ced332bf06362f/output/jars/classes.jar:/home/harisvsulaiman/.android/build-cache/31d4c76434ce8a5ba46bf630f178e855f7516250/output/jars/classes.jar:/home/harisvsulaiman/Sdk/extras/android/m2repository/com/android/support/support-annotations/25.2.0/support-annotations-25.2.0.jar:/home/harisvsulaiman/android-studio/gradle/m2repository/com/android/databinding/baseLibrary/2.3.0/baseLibrary-2.3.0.jar Destination for generated sources was modified by kapt. Previous value = /home/harisvsulaiman/AndroidStudioProjects/Hafiz/app/build/generated/source/apt/debug :app:compileDebugKotlinAfterJava w: The '-d' option with […]

数据绑定Kotlin Android工作室错误

我正在尝试在我的项目中使用数据绑定库,这是写在Kotlin。 我正在使用Kotlin v.1.0.2&Gradle插件v。2.12和绑定编译器。 我的build.gradle配置如下: android { dataBinding { enabled = true } } kapt { generateStubs = true } dependencies { kapt "com.google.dagger:dagger-compiler:2.2" provided "org.glassfish:javax.annotation:10.0-b28" kapt "com.android.databinding:compiler:2.12" } 在我的Fragment布局中,我用一些变量声明了<data>块: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.view.View"/> <import type="com.xxx.ui.AuthorizationPresenter"/> <import type="com.xxx.entity.AuthProvider"/> <variable name="model" type="com.xxx.ui.authorization.Model"/> <variable name="presenter" type="com.xxx.ui.authorization.AuthorizationPresenter"/> </data> <FrameLayout … /> </layout> 然后在我的AuthorizationFragment.kt类中设置这些变量: override fun […]

Android数据绑定的Kotlin问题

我正在尝试使用Kotlin在Android上进行数据绑定,但遇到一些问题。 下面列出了我的gradle文件。 顶层: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0-beta3' classpath 'com.google.gms:google-services:2.1.0-beta3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 应用级别: apply plugin: 'com.android.application' apply plugin: […]

Kotlin stdlib和Databinding

是否有可能在xml中使用Kotlin stdlib中的方法? 例如这个代码 <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:textColor="#333333" android:text="@{viewModel.note}" android:visibility="@{viewModel.note.isNotEmpty ? View.VISIBLE : View.GONE}"/> 产生编译错误 执行任务失败:app:compileDevDebugJavaWithJavac'。 java.lang.RuntimeException:发现数据绑定错误。 **** / data binding error **** msg:无法在类java.lang.String文件中找到方法isNotEmpty():D:\ Projects \ PushTracker -Android \ app \ src \ main \ res \ layout \ fragment_appointment_simple_details。 xml loc:104:44 – 104:70 **** \数据绑定错误**** 很明显,数据绑定试图找到方法isNotEmpty()在Java的字符串,但我可以强制数据绑定编译器使用kotlin的字符串?

在Kotlin中绑定具有多个参数的适配器

要为数据绑定适配器使用多个参数,Java语法是 @BindingAdapter(value={"arg1", "arg2"}, requireAll = false) 但是这在Kotlin中没有被编译: Error:(13, 37) Unexpected tokens (use ';' to separate expressions on the same line) Kotlin中多个参数的正确语法是什么?

Kotlin自定义属性数据绑定

我想在我的Kotlin项目中使用Android DataBinding库设置自定义属性,如下所示: 布局 <ImageView android:id="@+id/imgView” android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="center" android:adjustViewBounds="true" app:imageUrl="@{segment.url}"/> 码 class Utils { companion object { @BindingAdapter("bind:imageUrl") @JvmStatic fun loadImage(view: ImageView, url:String) {Picasso.with(view.context).load(url).error(R.drawable.error).into(view)} } 我得到的运行时错误是: in中的BindingAdapter不是静态的,需要使用从DataBindingComponent中检索的对象。 如果您不使用采用DataBindingComponent的通胀方法,请使用DataBindingUtil.setDefaultComponent或使所有BindingAdapter方法都是静态的。 任何指针来解决它? 这只发生在自定义属性上。 其余的数据绑定工作正常

Android数据绑定和Kotlin

我将我的Android应用程序从Java转换为Kotlin。 它工作正常,除了当我尝试转换使用Android数据绑定库的文件。 在这种情况下,Android Studio会在编译时抱怨未解决的引用: Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding 其中AdapterHistoriesListBinding是应该由数据绑定库生成的文件的名称。 它在Java中正常工作,所以我猜这是Kotlin的一个问题。 我正在使用Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0。 数据绑定库和Kotlin一起工作有什么需要做的吗?