使用Anko获取类型不匹配错误需要AnkoContext <ViewGroup>找到AnkoContext <Context>
我在一个基本的Android应用程序中使用Anko,在那里我正在实施recyclerView。 在onCreateViewHolder()
方法中,我得到一个编译时错误,说类型不匹配。 下面的代码中的其他一切都很好。
class ListAdapter(val arrayList: ArrayList<String> = ArrayList<String>()) : RecyclerView.Adapter<Holder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder? { //type Mismatch error required AnkoContext<ViewGroup> Found AnkoContext<Context> return Holder(ItemUI().createView(AnkoContext.create(parent!!.context))) } override fun onBindViewHolder(holder: Holder, position: Int) { val item = arrayList.get(position) holder.bind(item) } override fun getItemCount(): Int { return arrayList.size } } class ItemUI : AnkoComponent<ViewGroup> { override fun createView(ui: AnkoContext<ViewGroup>): View { return with(ui) { verticalLayout { lparams(width = matchParent, height = dip(48)) horizontalPadding = dip(16) var name=textView { id = 7 singleLine = true textSize = 16f } name.onClick { toast("Hi, ${name.text}!") } } } } } class Holder(itemView: View) : RecyclerView.ViewHolder(itemView){ val name: TextView = itemView.find(1) fun bind(nm: String) { name.text = nm } }
请让我知道,如果我使用了一个错误的语法或recyclerview
的执行是错误的
对不起,迟到的答案,但只浏览我的代码与Anko recyclerView适配器我注意到有创造者AnkoContext
只有以下签名:
AnkoContext.create(ctx: Context, owner: ViewGroup, setContentView: Boolean = false) AnkoContext.create(ctx: Context, setContentView: Boolean = false)
IDE(Android Studio)强调了当你错误的时候。 我用了第一个:
AnkoContext.create(parent!!.context, parent)
- 错误:执行失败的任务':app:kaptDebugKotlin'
- 尝试访问其他活动时应用程序崩溃
- 如何使Kotlin中的方法参数变化?
- Gradle同步失败:无法GET'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.3-2/kotlin-gradle-plugin-1.1.3-2.pom'
- Kotlin直接访问android.support.v4.app.Fragment中的Button对象引用
- Kotlin + MVP – 意外覆盖
- 无法访问Kotlin中的val
- 为什么在编译时使用kotlin在Dagger2中使用Scopes和Singleton注释会导致错误?
- 在Kotlin中开发的Android库模块导出到Java应用程序导致失败的解决方案:Lkotlin / jvm / internal / Intrinsics