Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kotlin中具有不同视图类型的Android recyclerview_Android_Kotlin_Android Recyclerview - Fatal编程技术网

kotlin中具有不同视图类型的Android recyclerview

kotlin中具有不同视图类型的Android recyclerview,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我在Kotlin中创建了一个具有多种视图类型的RecyclerView(技术动态方法分派或运行时多态性), 现在我有了ViewHolder,如下图所示 abstract class BaseViewHolder<T> internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){ abstract fun bind(_object:T) } class activation_items_m

我在Kotlin中创建了一个具有多种视图类型的RecyclerView(技术动态方法分派或运行时多态性), 现在我有了ViewHolder,如下图所示

abstract class BaseViewHolder<T> internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){

    abstract fun bind(_object:T)
}
class activation_items_main_activity (list: List<out BaseModel>,context: Context):RecyclerView.Adapter<BaseViewHolder<*>>() {

    private var mList: List<out BaseModel>? = null
    private var mInflator:LayoutInflater ? = null

    init {

        this.mList = list
        this.mInflator = LayoutInflater.from(context)

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {

        when (viewType)
        {
            Constant_ViewType_RecyclerView.ViewType.ListOfActivation_Type1 -> return ListOfActivation_MainActivity_Holder(mInflator!!.inflate(R.layout.activities_layout_item,parent,false))
            Constant_ViewType_RecyclerView.ViewType.ListOfActivation_Type2 -> return ListOfActivation_MainActivity2_Holder(mInflator!!.inflate(R.layout.activities_layout_items_type2,parent,false))
        }

        return null // -----> **problem return null** 

    }

    override fun getItemCount(): Int {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onBindViewHolder(holder: BaseViewHolder<*>, position: Int) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun getItemViewType(position: Int): Int {
        return mList!![position].viewType
    }

    class ListOfActivation_MainActivity_Holder(itemView: View):BaseViewHolder<ListOfActivation_MainActivity>(itemView)
    {

        override fun bind(_object: ListOfActivation_MainActivity) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

    }

    class ListOfActivation_MainActivity2_Holder(itemView: View):BaseViewHolder<ListOfActivation2_MainActivity>(itemView)
    {
        override fun bind(_object: ListOfActivation2_MainActivity) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

    }
抽象类BaseViewHolder内部构造函数(itemView:View):RecyclerView.ViewHolder(itemView){
抽象趣味绑定(_对象:T)
}
我有一个适配器,如下图所示

abstract class BaseViewHolder<T> internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){

    abstract fun bind(_object:T)
}
class activation_items_main_activity (list: List<out BaseModel>,context: Context):RecyclerView.Adapter<BaseViewHolder<*>>() {

    private var mList: List<out BaseModel>? = null
    private var mInflator:LayoutInflater ? = null

    init {

        this.mList = list
        this.mInflator = LayoutInflater.from(context)

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {

        when (viewType)
        {
            Constant_ViewType_RecyclerView.ViewType.ListOfActivation_Type1 -> return ListOfActivation_MainActivity_Holder(mInflator!!.inflate(R.layout.activities_layout_item,parent,false))
            Constant_ViewType_RecyclerView.ViewType.ListOfActivation_Type2 -> return ListOfActivation_MainActivity2_Holder(mInflator!!.inflate(R.layout.activities_layout_items_type2,parent,false))
        }

        return null // -----> **problem return null** 

    }

    override fun getItemCount(): Int {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onBindViewHolder(holder: BaseViewHolder<*>, position: Int) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun getItemViewType(position: Int): Int {
        return mList!![position].viewType
    }

    class ListOfActivation_MainActivity_Holder(itemView: View):BaseViewHolder<ListOfActivation_MainActivity>(itemView)
    {

        override fun bind(_object: ListOfActivation_MainActivity) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

    }

    class ListOfActivation_MainActivity2_Holder(itemView: View):BaseViewHolder<ListOfActivation2_MainActivity>(itemView)
    {
        override fun bind(_object: ListOfActivation2_MainActivity) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

    }
class activation\u items\u main\u活动(list:list,context:context):RecyclerView.Adapter(){
私有变量mList:列表?=null
私有变量mInflator:LayoutInflater?=null
初始化{
this.mList=list
this.mInflator=LayoutInflater.from(上下文)
}
重写CreateViewHolder(父级:ViewGroup,viewType:Int):BaseViewHolder{
何时(视图类型)
{
常量\u ViewType\u RecyclerView.ViewType.ListOfActivation\u Type1->返回ListOfActivation\u MainActivity\u持有者(mInflator!!.充气(R.layout.activities\u layout\u项目,父项,false))
常量\u ViewType\u RecyclerView.ViewType.ListOfActivation\u Type2->返回ListOfActivation\u MainActivity2\u保持架(mInflator!!.充气(R.layout.activities\u layout\u items\u Type2,父项,false))
}
返回null/->**问题返回null**
}
重写getItemCount():Int{
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
覆盖BindViewHolder(holder:BaseViewHolder,位置:Int){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
覆盖getItemViewType(位置:Int):Int{
返回mList!![position].viewType
}
活动的类列表\u main活动\u持有者(项目视图:视图):BaseViewHolder(项目视图)
{
重写趣味绑定(_对象:ListOfActivation_MainActivity){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
}
Activation\u MainActivity2\u Holder(项目视图:视图)的类列表:BaseViewHolder(项目视图)
{
重写趣味绑定(_对象:ListOfActivation2_MainActivity){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
}
现在,我无法在表达式When()之后的onCreateViewHolder方法中返回null值,并显示消息error“null不能是非null类型BaseViewHolder的值”
我不知道如何修复它。

不要在onCreateViewHolder方法中返回null,请尝试执行以下代码

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {

    when (viewType)
    {
        Constant_ViewType_RecyclerView.ViewType.ListOfActivation_Type1 -> return ListOfActivation_MainActivity_Holder(mInflator!!.inflate(R.layout.activities_layout_item,parent,false))
        else -> return ListOfActivation_MainActivity2_Holder(mInflator!!.inflate(R.layout.activities_layout_items_type2,parent,false))
    } 

}
重写CreateViewHolder(父级:ViewGroup,viewType:Int):BaseViewHolder{
何时(视图类型)
{
常量\u ViewType\u RecyclerView.ViewType.ListOfActivation\u Type1->返回ListOfActivation\u MainActivity\u持有者(mInflator!!.充气(R.layout.activities\u layout\u项目,父项,false))
else->return list of activation\u main activity2\u Holder(mInflator!!.flate(R.layout.activities\u layout\u items\u type2,parent,false))
} 
}
重写CreateViewHolder(父级:ViewGroup,viewType:Int):BaseViewHolder{
返回时间(viewType){
常量\u ViewType\u RecyclerView.ViewType.ListOfActivation\u Type1->ListOfActivation\u main activity\u支架(mInflator!!.充气(R.layout.activities\u layout\u项目,父项,false))
常量\u ViewType\u RecyclerView.ViewType.ListOfActivation\u Type2->ListOfActivation\u MainActivity2\u保持架(mInflator!!.充气(R.layout.activities\u layout\u item2,父项,假))
else->抛出IllegalStateException(“非法视图类型”)
}
}

谢谢您的回答请看