编写自定义Retrofit适配器的通用问题

在过去,我已经编写了基于此代码的自定义error handling适配器进行改进: https : //github.com/square/retrofit/blob/master/samples/src/main/java/com/example/retrofit/ErrorHandlingAdapter.java 哪些工作真的很好。 我现在正在Kotlin编写我们的新应用程序,当转换代码时,呼叫适配器工厂给我一个错误,特别是在get函数中。 它转换成这样的样子: override fun get(returnType: Type, annotations: Array, retrofit: Retrofit): CallAdapter? { if (CallAdapter.Factory.getRawType(returnType) != MyCall::class) { return null } if (returnType !is ParameterizedType) { throw IllegalStateException( “MyCall must have generic type (eg, MyCall)”) } val responseType = CallAdapter.Factory.getParameterUpperBound(0, returnType) val callbackExecutor = retrofit.callbackExecutor() return ErrorHandlingCallAdapter(responseType, callbackExecutor). \\This line […]

如何将徽标保留在折叠工具栏上方

我在kotlin编程,我有折叠工具栏的问题,我的主要观点是以下 主视图 滚动我的徽标时,会出现在折叠工具栏后面,如下图所示 当滚动 我需要标志在酒吧前面,如下图所示 结果图像 结果图像用photoshop编辑

合约validation失败,在corda Hello World pt 2

我正在使用kotlin在corda tutorial pt 2中学习这个教程 。 每次我尝试使用下面的命令通过PartyA中的CRaSH shell启动一个新的流程: start IOUFlow iouValue: 30, otherParty: “C=US, L=New York, O=PartyB” 我收到合同validation失败: Done Contract verification failed: List has more than one element., contract: com.template.IOUContract@7c109db7, transaction: D08920023D788F80F289527BD9C27BCD54B7DAC6C53866BFA7B90B23E0E4749B IOUFlow类: @InitiatingFlow @StartableByRPC class IOUFlow(val iouValue: Int, val otherParty: Party) : FlowLogic() { override val progressTracker = ProgressTracker() @Suspendable override fun call() { val […]

generics接口中的超出投影types禁止使用具有generics参数的metod

我开始使用Kotlin,并定义如下界面: interface AAdapter { fun onCreateAViewHolder(parent: ViewGroup): VH fun onBindAViewHolder(v: VH, position: Int) } 当我尝试在代码上使用它时: class Klasa ( private val adapter: AAdapter ) { fun doSth(){ //… val vh = this.adapter.onCreateAViewHolder(parent) //on below line I get error adapter.onBindAViewHolder(v, position) //… } } 我得到一个错误: Out-projected type’AAdapter ‘禁止使用’public abstract fun onBindAViewHolder(v:T,position:Int):Unit 我绑定添加“在”或“出”定义,但我很困惑。 如何让它。

无法创建新用户

当我正在尝试创建新帐户时,创建帐户按钮不会在android studio中触发,也不会进入下一个活动,即使在屏幕上也没有显示错误消息。 请帮我解决这个问题。 这是在Kotlin版本以及如何显示错误消息时,用户不填充任何下面提到的字段。 class RegisterActivity : AppCompatActivity( ) { var mAuth: FirebaseAuth? = null var mDatabase: DatabaseReference? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_register) mAuth = FirebaseAuth.getInstance() createaccountET.setOnClickListener { val name = accountdisplaynameET.text.toString().trim() val email = registeremailET.text.toString().trim() val password = registerpasswordET.text.toString().trim() val reenterpassword = reenterpasswordET.text.toString().trim() val Mobile = mobilenumberET.text.toString().trim() val date = […]

如何指定一个types参数我不知道

我已经将我的问题减少到了下面的最小范例: interface Property<T : Comparable> fun <T : Comparable> parsePropertyValue(property: Property, value: String): T = TODO() fun test() { val property: Property = TODO() val value = parsePropertyValue(property, “test”) } 对parsePropertyValue的调用不会编译,并显示错误消息“无法推断types参数T”。 等效的Java代码编译没有问题: interface JavaProperty<T extends Comparable> { } class Test { public static void main(String[] args) { JavaProperty property = null; Comparable value = parsePropertyValue(property, […]

如何从kotlin的道路上获得歌曲的ALBUM ART?

请告诉我如何从媒体文件路径中获取媒体文件的专辑封面。 我已经尝试了下面的代码: override fun onBindViewHolder(holder: MyViewHolder?, position: Int) { var songObject = items.get(position) retiever.setDataSource(songObject.songData) var art = retiever.embeddedPicture var image = BitmapDrawable(BitmapFactory.decodeByteArray(art,0,art.size)) holder?.art_icon?.setBackgroundDrawable(image) holder?.title?.text = songObject.songTittle holder?.artist?.text = songObject.songArtist holder?.album?.text = songObject.songAlbum SongPlayingManager(items,position,view).check() holder?.complete_song_view?.setOnClickListener { SongPlayingManager(items,position,view).playSong() } } 此代码不起作用& LogCat显示以下错误: 进程:com.vikanshu.echo,PID:15640 java.lang.NullPointerException:尝试获取null数组的长度

领域调用setter

我使用领域作为数据库和kotlin作为语言。 我为属性实现了我的自定义setter方法。 Realm能以某种方式称呼这个设定者吗? 例如: open class Human(): RealmObject() { open var Name: String = “” set(value) { setName(value) } } 现在我也有一个属性changeDate ,这将是很好,如果我可以在setName自动设置changeDate新的实际日子。 但是如果Realm也调用这个方法,我不能这样做。 谢谢

Android注释与Kotlin和生成工具2.3.0

要在2.3.0之前使用Android Annotations,人们可以这样做: dependencies { apt “org.androidannotations:androidannotations:$AAVersion” compile “org.androidannotations:androidannotations-api:$AAVersion” } 要使用Kotlin,您将使用kapt而不是apt ( 链接 )。 从2.3.0开始,一个人需要使用annotationProcessor来代替apt: annotationProcessor “org.androidannotations:androidannotations:$AAVersion” compile “org.androidannotations:androidannotations-api:$AAVersion” 有没有人知道需要更改以注释处理程序使用Kotlin? 我目前有一个非常简单的主要活动,我使用@EActivity来设置布局。 我在manifest, .MainActivity_声明了生成的文件。 在Java中,这工作正常。 在Kotlin: @EActivity(R.layout.activity_main) open class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } } 我得到一个运行时错误: 过程:[…],PID:10018 java.lang.RuntimeException:无法实例化活动ComponentInfo {[…]。MainActivity_}:java.lang.ClassNotFoundException:没有find类“[…]”。 MainActivity_“的路径:DexPathList [[zip文件”/data/app/[…]-1/base.apk”],nativeLibraryDirectories=[/data/app/[…]-1/lib/x86, / vendor / lib,/ system / lib]] ****更新**** 所以我清理并重建了这个项目。 看起来注解不是为MainActivity生成下划线文件。 […]

有没有办法从一个范围创建一个非null数组?

在Java中,可以使用传统的for循环创建一个简单的数组: ImageButton[] buttons = new ImageButton[count]; for (int i = 0; i < count; i++) { buttons[i] = view.findViewById(BUTTON_IDS[i]); } 简单的转换为Kotlin会产生以下结果: val buttons = arrayOfNulls(count) for (i in 0..count) { buttons[i] = view.findViewById(BUTTON_IDS[i]) } 这个问题是,现在数组中的每个元素是可选的; 这与我的代码谜语? 运营商。 有没有办法以类似的方式创建一个数组,但没有可选的types?