【问题标题】:Kotlin Type mismatch after converted in Android Studio在 Android Studio 中转换后的 Kotlin 类型不匹配
【发布时间】:2018-01-04 00:47:32
【问题描述】:

我尝试将现有的 android 代码转换为 Kotlin 代码。但是,它显示了以下错误

转换前的代码。

 recyclerView.setAdapter(new RecyclerView.Adapter() {
            @Override
            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                LayoutInflater layoutInflater = getLayoutInflater();
                return new RecyclerView.ViewHolder(layoutInflater.inflate(R.layout.item_restaurant2, parent, false)) {
                };
            }

            @Override
            public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

            }

            @Override
            public int getItemCount() {
                return 3;
            }
        });

转换后的代码。

recyclerView!!.setAdapter(object : RecyclerView.Adapter() {
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
                val layoutInflater = layoutInflater
                return object : RecyclerView.ViewHolder(layoutInflater.inflate(R.layout.item_restaurant2, parent, false)) {

                }
            }

            override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

            }

            override fun getItemCount(): Int {
                return 3
            }
        })

【问题讨论】:

  • 您是否有特定原因要使用匿名适配器?
  • 其实是我在“代码->将Java转换为Kotlin”中使用内置函数(将Java转换为Kotlin文件)后出现的错误。我只是想知道如何解决它。
  • 我说的是你的 Java 代码,在它被转换之前。为适配器实际创建一个类对您来说是有意义的,而不是将 new Adapter() 内联到 setAdapater
  • 你是对的。为它开设一堂课是有意义的。一开始我走错路了。

标签: android android-recyclerview kotlin android-studio-3.0


【解决方案1】:

object : RecyclerView.Adapter() { - 当涉及泛型时,Kotlin 真的不喜欢 Java 的原始类型。指定 ViewHolder 类型可能会修复您的代码。

例如,object : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

【讨论】:

  • 我是 Kotlin 语法的新手。你能给出答案吗?
  • 挣扎了2天,终于明白你的意思了。现在我使用语句 recyclerView!!.adapter = object : RecyclerView.Adapter() 它现在可以工作了。好像我忘了它是它的setter函数。
猜你喜欢
  • 1970-01-01
  • 2018-12-11
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多