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
,以避免混淆。或者更好的是,为内部类使用不同的类名