gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:03:02 27 4
gpt4 key购买 nike

我想把这个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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com