Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Android 覆盖';顶级功能';_Android_Inheritance_Kotlin_Overriding - Fatal编程技术网

Android 覆盖';顶级功能';

Android 覆盖';顶级功能';,android,inheritance,kotlin,overriding,Android,Inheritance,Kotlin,Overriding,我正在尝试创建一个baseRecycleServiceAdapter:RecycleView.Adapter类,为使用泛型的类提供默认/通用功能。由于视图模型的不同,onBindViewHolder和onCreateViewHolder方法在基类上抛出NotImplementedError。现在,当我想在继承baseRecycleServiceAdapter的类中实现方法时,我遇到了以下错误: Modifier 'override' is not applicable to 'top level

我正在尝试创建一个
baseRecycleServiceAdapter:RecycleView.Adapter
类,为使用泛型的类提供默认/通用功能。由于视图模型的不同,
onBindViewHolder
onCreateViewHolder
方法在基类上抛出NotImplementedError。现在,当我想在继承
baseRecycleServiceAdapter
的类中实现方法时,我遇到了以下错误:

Modifier 'override' is not applicable to 'top level function'
如何安全地覆盖这些内容而不遇到此错误

Base.kt:

package com.example

        abstract class BaseAdapter<T, THolder: RecyclerView.ViewHolder>  (
        private val mValues: List<T>,
        private val mListener: OnFragmentInteractionListener<T>?
    )  : RecyclerView.Adapter<THolder>() {
        private val mOnClickListener: View.OnClickListener
        init {
            mOnClickListener = View.OnClickListener { v ->
                val item = v.tag as T
                mListener?.onListFragmentInteraction(item)
            }
        }

         override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): THolder {
            throw NotImplementedError()
        }

        override fun onBindViewHolder(holder: THolder, position: Int) {
            throw NotImplementedError()
        }

        override fun getItemCount(): Int = mValues.size


    //And some other fancy methods
    }
package.com.example
抽象类BaseAdapter(
私有val值:列表,
私人val mListener:OnFragmentInteractionListener?
):RecyclerView.Adapter(){
private val mOnClickListener:View.OnClickListener
初始化{
mOnClickListener=View.OnClickListener{v->
val项目=v.标记为T
mListener?.onListFragmentInteraction(项目)
}
}
重写CreateViewHolder(父级:ViewGroup,viewType:Int):THolder{
抛出NotImplementedError()
}
覆盖BindViewHolder(holder:THolder,position:Int){
抛出NotImplementedError()
}
重写fun getItemCount():Int=mValues.size
//还有其他一些奇特的方法
}
其他类别.kt:

package com.example
class TheAdapter(
    private val mValues: List<Item>,
    private val mListener: OnFragmentInteractionListener<Item>?
) : BaseAdapter<Item, ViewHolder>(mValues, mListener)

//Error here
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

    }

//Error here
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

    }

    inner class ViewHolder(val mView: View) : RecyclerView.ViewHolder(mView) {
        //ViewHolder properties and methods
    }
}
package.com.example
类自适应(
私有val值:列表,
私人val mListener:OnFragmentInteractionListener?
):BaseAdapter(mValues,mListener)
//这里出错
override onCreateViewHolder(父级:ViewGroup,viewType:Int):ViewHolder{
}
//这里出错
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
}
内部类ViewHolder(val mView:View):RecyclerView.ViewHolder(mView){
//ViewHolder属性和方法
}
}

您已重载类名ViewHolder。类定义中的ViewHolder是RecyclerView.ViewHolder。函数签名中的一个是内部类。您需要在类定义中指定您的内部适配器:
BaseAdapter
,以避免混淆。或者更好的是,为内部类使用不同的类名