Tag: kotlin android extensions

适配器或ViewHolder中的Kotlin综合

我是kotlin的新手。 我发现并尝试使用合成方法,而不是在我的Activity类中使用烦人的方法findViewById ,但是我发现“如果我们想调用View上的综合属性(在适配器类中有用),我们还应该导入kotlinx.android.synthetic .main.view。*“。 但我不明白它是如何工作的? 有没有例子?

Android Kotlin:java.lang.NoClassDefFoundError:<KotlinObject>的解析失败

我们的Android应用程序的每一秒运行,我们得到一个崩溃说 java.lang.NoClassDefFoundError: Failed resolution of: Lin/blahapp/xxx/BlahUtil BlahUtil是一个带有@JvmStatic标注的kotlin对象。 我从Android应用程序的其余部分(All in java)调用这些静态方法。 我们使用multidex 1.0.1。 我在android studio 2.1.2上,使用JDK 7。 相关的gradle配置: compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 16 targetSdkVersion 23 } dexOptions { incremental true dexInProcess true javaMaxHeapSize "10g" preDexLibraries true } buildscript { ext.kotlin_version = '1.0.3' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin-android' dependencies { […]

Java如何调用kotlin扩展方法

我用kotlin写了一个扩展方法 package com.zhongan.zachat.extention import android.content.Context import android.widget.Toast /** * Created by Carl on 2016/12/1. * * */ fun Context.toastLong(msg:String) = Toast.makeText(this,msg,Toast.LENGTH_LONG).show() fun Context.toastshort(msg:String) = Toast.makeText(this,msg,Toast.LENGTH_SHORT).show() 当我在kotlin activity调用toastLong("test")是可以的。 但是在java actvity IDE中却说找不到这个方法。 如何在java代码中调用kotlin扩展方法

Android库不能编译kotlin

我的项目有两个项目: main project和library project 。 main project依赖library project 。 现在我想用kotlin他们两个。 我已经将我的common rx extension code添加到library project : fun String.rxRequest(@NotNull builder: (Request.Builder) -> Unit): Observable<Response> = Observable.create<Response> { var mBuilder: Request.Builder = Request.Builder().url(this) builder.invoke(mBuilder); it.onNext(HttpClient.create().newCall(mBuilder.build()).execute()) it.onCompleted() }.subscribeOn(Schedulers.from(THREAD_POOL_NET)); 然后我在我的main project调用这个函数: "http://www.xxx.xxx".rxRequest { val requestBody = FormEncodingBuilder().add("code", code).build() it.post(requestBody) .header("XRDid", appInfo.deviceId) } 它建立失败: LoginPresenter.kt: Unresolved reference: rxRequest library project构建成功,生成在build文件夹中的kotlin […]

解析xml kotlin android

我有这样的XML: <horo> <aries> <today> Сегодня вас могут здорово огорчить. Если от расстройства все начнет валится из рук, просто спокойно сядьте и тихонько подождите хорошей новости. </today> </aries> <taurus> <today> Сегодня у вас могут возникнуть проблемы на личном фронте. Спасти вас от перспективы оказаться не у дел может сухой, рациональный и в высшей степени объективный подход […]

Java与Kotlin泛型

我有下面的Java类,我试图转换为使用泛型的Kotlin。 抽象类MvpViewHolder,M,V:View?>(itemView:View):RecyclerView.ViewHolder(itemView){ public abstract class MvpViewHolder<P extends BasePresenter> extends RecyclerView.ViewHolder { protected P presenter; public MvpViewHolder(View itemView) { super(itemView); } public void bindPresenter(P presenter) { this.presenter = presenter; presenter.bindView(this); } public void unbindPresenter() { presenter = null; } } 这是我的Kotlin尝试 abstract class MvpViewHolder<P : BasePresenter>(itemView: View) : RecyclerView.ViewHolder(itemView) { protected var presenter: P? = null […]

Android Kotlin .visibility

我有这样的代码,应该使图像可见,但我不知道它应该如何写入Kotlin。 我正在尝试在Kotlin中使用.visibility ,我不知道该怎么给它一个价值。 它基于setVisibility() 。 码: fun hacerVisibleLaFoto(v: View) { imageView.visibility = 1; } 我把1放在值域中,因为在那里需要一个整数值,这是我的占位符值,直到我找到真正的值。 =号后面应该显示的值是什么?

Kotlin Android视图绑定:findViewById vs Butterknife vs Kotlin Android扩展

我试图找出在Kotlin中执行Android视图绑定的最佳方法。 似乎有几个选项在那里: findViewById val button: Button by lazy { findViewById<Button>(R.id.button) } 牛油刀 https://github.com/JakeWharton/butterknife @BindView(R.id.button) lateinit var button: Button Kotlin Android扩展 https://kotlinlang.org/docs/tutorials/android-plugin.html import kotlinx.android.synthetic.main.activity_main.* 我非常熟悉Java领域的findViewById和Butterknife,但是Kotlin中每种视图绑定方法的优缺点是什么? Kotlin Android扩展与RecyclerView + ViewHolder模式兼容吗? 另外Kotlin Android Extensions如何通过include处理嵌套视图的视图绑定? 例如:对于使用activity_main.xml的Activity,如何访问View custom1 ? activity_main.xml中 <…> <include layout="@layout/custom" android:id="@+id/custom" /> </> custom.xml <…> <View android:id="@+id/custom1" … /> <View android:id="@+id/custom2" … /> </>

在ViewHolder中使用kotlin-android-extensions

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindata(text: SingleText){ itemView.title.text = text.title itemView.desc.text = text.desc } } 像这样的代码,Kotlin在android扩展中有任何缓存? 当我反编译Kotlin字节码 public final void bindata(@NotNull SingleText text) { Intrinsics.checkParameterIsNotNull(text, "text"); ((AppCompatTextView)this.itemView.findViewById(id.title)).setText((CharSequence)text.getTitle()); ((AppCompatTextView)this.itemView.findViewById(id.desc)).setText((CharSequence)text.getDesc()); } 这意味着当我在Adapter.onBindViewHolder()中调用binData时,它会每次调用findViewById 这大大增加了性能的损失,并没有达到布局重用的目的 Kotlin在ViewHolder的android扩展中有任何缓存逻辑?

在Kotlin中使用Singleton的StackOverflowError

谁能告诉,为什么我得到一个java.lang.StackOverflowError使用这个Kotlin类? 第41行是if (instance == null) { class TokenHelper protected constructor() { var token: String? = null var appId: String? = null var installationId: String? = null var userId: String? = null companion object { var instance: TokenHelper? = null get() { if (instance == null) { instance = TokenHelper() } return instance } } } […]