Kotlin:类型不匹配(RecyclerView.Adapter <recyclerview.viewholder>)

时间:2019-05-16 05:31:55

标签: android kotlin android-recyclerview recycler-adapter

我对使用Kotlin很陌生,我试图将我的项目从java移植到kotlin。基本上,我有一个帮助程序类,尝试初始化recyclerview布局,适配器等。

在Java中: 适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
{
  ...
  public static class ViewHolder extends RecyclerView.ViewHolder
  {
    ...
  }
  ...
}

我的助手功能:

public void init(RecyclerView recyclerView, boolean horizontal, boolean divider, RecyclerView.Adapter adapter, Context context)

当我创建适配器并调用该函数时,它工作正常。

但是在科特林: 适配器

class MyAdapter(...) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
  ...
  inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    ...
  }
  ...
}

辅助功能

fun init(recyclerView : RecyclerView, horizontal: Boolean, divider: Boolean, adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>, context: Context) {
  ...
}

创建适配器并调用函数时

val myAdapter = MyAdapter(...)
helper.init(listView, false, false, myAdapter, this)

我在需要的地方出现了不匹配错误:RecyclerView.Adapter<RecyclerView.ViewHolder>,发现:MyAdapter

明智的继承,它应该工作正确吗?还是我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

不太正确,您需要的正确声明是:

a.loc[0, 'x'] = b.loc[1,'x']
a = a.set_index(['a','b'])

print(a)
     x
a b   
1 b  9
2 b  5
3 b  6

,然后您需要实现诸如以下签名的方法:

class MyAdapter() : RecyclerView.Adapter<RecyclerView.ViewHolder>() 

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder 必须返回ViewHolder或其子类,例如

onCreateViewHolder

其中:-

return ItemViewHolder(view)

,您可以在绑定函数中使用此知识,例如

inner class ItemViewHolder(val mView: View) : RecyclerView.ViewHolder(mView)
{
  val mFieldView: TextView = mView.field
  ...
}

答案 1 :(得分:0)

查看您使用的适配器的类型,有不同类型的适配器,例如阵列适配器,recyclerView适配器。具体来说,在列表视图中,我们使用阵列适配器。与recycler View适配器一起使用时,是recycler view适配器,如果在recycler view中使用阵列适配器,它将显示上述错误。