我在一个基本的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
的执行错误,请告诉我
答案 0 :(得分:2)
很抱歉迟到的答案,但只是浏览我的代码以及使用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)