Articles of kotlin

glide recyclerview集成的进展如何?

我只是尝试使用glide recyclerview集成并阅读有关它的文档,它说:“ RecyclerView集成库使您的应用程序中可以使用RecyclerViewPreloader .RecyclerViewPreloader可以在用户在RecyclerView中滚动的位置之前自动加载图像 ”,但是我没有意识到滑翔回收视图集成和滑行之间有什么区别,请解释一下滑翔回收视图集成的进展是什么? 我怎么能看到差异? 这是我的代码: GlideModule.kt @GlideModule class GlideModule : AppGlideModule() { override fun applyOptions(context: Context?, builder: GlideBuilder?) { val requestOp = RequestOptions.noAnimation() .priority(Priority.LOW) builder?.setDefaultRequestOptions(requestOp) ?.setLogLevel(Log.VERBOSE) super.applyOptions(context, builder) } // Disable manifest parsing to avoid adding similar modules twice. override fun isManifestParsingEnabled(): Boolean { return false } } MyPreloadModelProvide.kt class MyPreloadModelProvide(val listUrls: List, […]

折叠CardViewanimation无法正常工作

我想做什么 我有一个RecyclerView ,其中包含许多基本上属于CardView 。 这些卡片在他们的身体中间有一个支持文本,默认情况下可见性设置为GONE ,当我点击卡片右侧的箭头时,它变得可见。 我试图在文本显示的同时对卡进行animation处理,然后它就会崩溃。 下图显示了扩展卡和折叠卡: CardView布局(为了便于阅读,我删除了一些部分): 问题 当卡片展开并显示正文TextView ,animation正在工作,但是,当我尝试将其折叠回来时,animation下方的卡片与第一张卡片重叠。 例: 到目前为止我尝试过的 我之前已经在这里问了一个关于这种行为的类似问题 ,但是该解决方案不适用于卡片中间的TextView 。 负责animation部分的代码位于RecyclerView适配器内。 箭头有一个点击监听器,可以调用以下方法: private fun toggleVisibility() { if (bodyContent.visibility == View.GONE || bodyContent.visibility == View.INVISIBLE) { btSeeMore.animate().rotation(180f).start() TransitionManager.beginDelayedTransition(root, AutoTransition()) bodyContent.visibility = View.VISIBLE } else { btSeeMore.animate().rotation(0f).start() TransitionManager.beginDelayedTransition(root, AutoTransition()) bodyContent.visibility = View.GONE } } root是我的CardView 。 我也尝试使用LinearLayout而不是卡本身进行延迟转换,但这也不起作用。 如何为我的布局实现这种行为?

找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck

使用Kotlin为Android项目启用ProGuard时,Gradle构建失败,并显示以下错误: 警告:HomeChargerLocation:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:HomeChargerLocation $ Address:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:HomeChargerLocation $ Address $ Creator:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:HomeChargerLocation $ Car:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:HomeChargerLocation $ Car $ Creator:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:HomeChargerLocation $ Creator:找不到引用的类kotlin.internal.annotations.AvoidUninitializedObjectCopyingCheck 警告:处理任务java.io.IOException时发生exception:请先纠正上述警告。 相应的类: https : //gist.github.com/makovkastar/cfa4bf1bea38556279f20eef46001cf8 我认为它与Kotlin实验包中的@Parcelize注释有关,因为当我们开始使用它时出现问题。 更新 :我在Kotlin bug跟踪器中创建了一个问题 – https://youtrack.jetbrains.com/issue/KT-21628

Saripaar formvalidation第二次在kotlin工作

我正在使用saripaar进行表单validation。 我在fragmentA中有一些edittext,在validation成功时,视图将切换到fragmentB。 Butterknife和saripaar注释片段。 @NotEmpty @BindView(R.id.nameEditText) lateinit var nameEditText: EditText Saripaar初始化: val validator = Validator(this) validator.setValidationListener(this) 要validation字段: validator.validate() validation第一次正常工作。 当从fragmentB返回到fragmentA时,validation不起作用,它将直接调用onvalidationsuccess。 在onValidationSucceeded上 ,我使用以下函数切换到fragmentB。 fun openFragment(fragment: Fragment) { val ft = activity.supportFragmentManager.beginTransaction() ft.replace(R.id.container, fragment) ft.addToBackStack(null) ft.commitAllowingStateLoss() } 此问题仅出现在kotlin中,但不出现在java中。

Android Kotlin:java.lang.NoClassDefFoundError:解析失败:

我们的Android应用程序的每一次运行,我们得到一个崩溃说 java.lang.NoClassDefFoundError: Failed resolution of: Lin/blahapp/xxx/BlahUtil BlahUtil是一个带有@JvmStatic注释的kotlin对象。 我从Android应用程序的其余部分调用这些静态方法(全部在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 { compile “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version” […]

使用Kotlin在RxJava中使用花括号和普通括号之间的区别是什么

我不明白使用RxJava时花括号和Kotlin中的普通括号之间的真正区别。 例如,我有以下代码按预期工作: someMethodThatReturnsCompletable() .andThen(anotherMethodThatReturnsACompletable()) .subscribe(…) 但以下不起作用: someMethodThatReturnsCompletable() .andThen { anotherMethodThatReturnsACompletable() } .subscribe(…) 注意链的andThen()部分与花括号的区别。 我无法理解两者之间的区别是什么。 我看过一些文章,但不幸的是我仍然难以理解这种微妙的差异。

具有命名参数的kotlin中的Dagger 2构造函数注入

我有这种依赖: @Singleton class SpiceMix @Inject constructor(@field:[Named(“oregano”)] private val oregano: Spice, @field:[Named(“sage”)] private val sage: Spice, @field:[Named(“rosemary”)] private val rosemary: Spice) 以及一个实现其依赖关系的模块: @Module class SpiceModule { @Provides @Named(“oregano”) @Singleton fun provideOregano(): Spice = Oregano() @Provides @Named(“sage”) @Singleton fun provideSage(): Spice = Sage() @Provides @Named(“rosemary”) @Singleton fun provideRosemary(): Spice = Rosemary() 然后将SpiceMix注入我的应用程序的不同位置。 但是,这不编译,我收到一个错误: Spice cannot be provided […]

Android P visibilityawareimagebutton.setVisibility只能从同一个库组中调用

我正在尝试使用新的Android P FloatingActionButton,这是com.google.android.material.floatingactionbutton.FloatingActionButton的一部分,我收到此警告: VisibilityAwareImageButton.setVisibility只能从同一个库组中调用(groupId = com.google.android.material) import com.google.android.material.floatingactionbutton.FloatingActionButton import android.view.View class MainActivity : AppCompatActivity() { lateinit var demoFab: FloatingActionButton override fun onCreate(savedInstanceState: Bundle?) { demoFab = findViewById(R.id.demoFab) demoFab.visibility = View.VISIBLE // the warning is here } } 我尝试过搜索,唯一的搜索结果是关于响应UI可见性更改: https://developer.android.com/training/system-ui/visibility 我试着探索如何查看com.google.android.material包中是否存在VISIBLE int值,我发现的唯一一个是com.google.android.material.floatingactionbutton.FloatingActionButton.VISIBLE ,但警告仍然存在。 顶级build.gradle buildscript { ext.kotlin_version = ‘1.2.41’ repositories { google() jcenter() } dependencies { […]

使用Retrofit方法更具表现力的方式

我想使void enqueue(Callback callback); 方法调用代码块更具表现力,这是我通常所拥有的 request.enqueue(object : Callback { override fun onFailure(call: Call?, t: Throwable?) { // } override fun onResponse(call: Call?, response: Response?) { // } }) 而想要和意思是,更改此代码阻止更清洁的方式并删除那些覆盖,对象,回调关键字并执行类似的操作: request.enqueue({throwable, response -> }) 我认为可以使用扩展和高阶函数以某种方式进行改进。 有谁知道怎么做?

更新到Android studio 3.1后我面对这个erorr无法findorg.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0

更新到Android Studio 3.1后,我遇到此错误。 注意:我使用的是Java而不是Kotlin Could not find org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0. Searched in the following locations: https://maven.fabric.io/public/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom https://maven.fabric.io/public/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.jar https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.jar Required by: project :app > com.android.tools.build:gradle:3.1.0 > com.android.tools.build:gradle-core:3.1.0 project :app > com.android.tools.build:gradle:3.1.0 > com.android.tools.build:gradle-core:3.1.0 > com.android.tools.build:builder:3.1.0 project :app > com.android.tools.build:gradle:3.1.0 > com.android.tools.build:gradle-core:3.1.0 > com.android.tools.lint:lint-gradle-api:26.1.0 project :app > com.android.tools.build:gradle:3.1.0 > com.android.tools.build:gradle-core:3.1.0 > com.android.tools.build:gradle-api:3.1.0 project :app > com.android.tools.build:gradle:3.1.0 > com.android.tools.build:gradle-core:3.1.0 […]