android - 子类和父类中的 Kotlin 泛型

标签 android kotlin

我想把这个java类转换成kotlin

package com.mkhaleghy.cinema.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.mkhaleghy.cinema.R;
import com.mkhaleghy.cinema.daylist.Movie;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class RecyclerAdapter<T extends Element> extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

public RecyclerAdapter(Context context) {

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return null;
}

@Override
public int getItemViewType(int position) {
    return 0;
}

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

}

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

public class ViewHolder extends RecyclerView.ViewHolder {
    View itemView;

    public ViewHolder(View itemView) {
        super(itemView);
        this.itemView = itemView;
    }
}

}

很简单哈。我使用 android studio kotlin 工具转换它,结果是

class RecyclerAdapter<T : Element>(context: Context) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        return null
    }

    override fun getItemViewType(position: Int): Int {
        return 0
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
s
        return 10
    }

    inner class ViewHolder(internal var itemView: View) : RecyclerView.ViewHolder(itemView)

}

但是我在 RecyclerAdapter.ViewHolder 上收到一个错误,上面写着“类 RecyclerAdapter 需要一个类型参数” 谁能帮我解决这个问题?

最佳答案

如果你有像这样的泛型类:

class Adapter<T : Element>

你必须这样调用它:

: RecyclerView.Adapter<Adapter<Element>.ViewHolder>()

这就是问题所在。但是你该怎么办?最简单的想法是在单独的文件(而不是内部类)中创建 ViewHolder 并实现一些绑定(bind)接口(interface)。但您也可以搜索其他解决方案。

例如:https://medium.com/@mohanmanu/generic-adapter-with-kotlin-part-i-74e191d68b0f

关于android - 子类和父类中的 Kotlin 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49665908/

相关文章:

java - 如果我使用 SharedPreferences,使用 onSaveInstanceState 是否有用

java - 用控制字符的 Unicode 符号替换 ASCII 控制字符

java - 使用另一个数组列表对数组列表进行排序

AndroidX 依赖项和 XML 导致崩溃

在 Android Manifest 中配置特定风格的 Android Activity

jar - 在JAR中将Kotlin .kt类打包

android - Robolectric 测试和 LiveData

android - 协程 : Runblocking freeze Android UI

kotlin - 创建 n 大小零填充 ArrayList<Int> 的最佳方法是什么?

android - 如何使用 Fuel for Kotlin 发布多部分/表单数据?