Android 在Kotlin的数据类中具有内部类和接口是否是最佳实践

Android 在Kotlin的数据类中具有内部类和接口是否是最佳实践,android,android-studio,kotlin,inner-classes,android-mvvm,Android,Android Studio,Kotlin,Inner Classes,Android Mvvm,我有一个数据类,它是一个房间实体,代码如下 @Entity(tableName = "request") data class Request( @PrimaryKey var id: Int, var name: String, var date: String, var requestTime: String, var deliveryTime: String, var distanceCovered: String ){ interface OnClickListener{ fun

我有一个数据类,它是一个房间实体,代码如下

@Entity(tableName = "request")
data class Request(
@PrimaryKey
var id: Int,
var name: String,
var date: String,
var requestTime: String,
var deliveryTime: String,
var distanceCovered: String
){
interface OnClickListener{
    fun onClick(request: Request)
}

class Adapter(
    private val requests: List<Request>,
    private val requestsFor: Int,
    private val listener: Request.OnClickListener
) : RecyclerView.Adapter<Adapter.ViewHolder>() {

    companion object{
        const val REQUESTS_FOR_SEND = 0
        const val REQUESTS_FOR_ONGOING = 1
        const val REQUESTS_FOR_COMPLETED = 2
    }

    class ViewHolder(
        var recyclerViewRequestBinding: RequestBinding
    ) : RecyclerView.ViewHolder(recyclerViewRequestBinding.root)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
        ViewHolder(
            DataBindingUtil.inflate(
                LayoutInflater.from(parent.context),
                R.layout.request,
                parent,
                false
            )
        )

    override fun getItemCount() = requests.size

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val request = requests[position]
        holder.recyclerViewRequestBinding.request = request
        when(requestsFor){
            REQUESTS_FOR_COMPLETED ->{
                holder.itemView.request_date.hide()
                holder.itemView.request_delivery_time.show()
                holder.itemView.request_distance_covered.show()
            }
        }
        holder.itemView.setOnClickListener { listener.onClick(requests[position]) }
    }
}
}
@实体(tableName=“请求”)
数据类请求(
@主键
变量id:Int,
变量名称:String,
变量日期:字符串,
var requestTime:String,
var deliveryTime:String,
var距离覆盖:字符串
){
接口OnClickListener{
趣味onClick(请求:请求)
}
类适配器(
私人val请求:列表,
私人val请求:Int,
私有val侦听器:Request.OnClickListener
):RecyclerView.Adapter(){
伴星{
发送的常量值请求=0
const val请求_FOR_consuming=1
已完成的常量值请求=2
}
类视图持有者(
var recycleServiceWRequestBinding:RequestBinding
):RecyclerView.ViewHolder(recyclerViewRequestBinding.root)
重写CreateViewHolder(父级:ViewGroup,viewType:Int)=
观众(
充气(
LayoutFlater.from(父上下文),
R.layout.request,
父母亲
假的
)
)
覆盖getItemCount()=请求。大小
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val请求=请求[位置]
holder.RecycleServiceWRequestBinding.request=请求
何时(请求者){
请求已完成->{
holder.itemView.request\u date.hide()
holder.itemView.request\u delivery\u time.show()
holder.itemView.request\u distance\u covered.show()
}
}
holder.itemView.setOnClickListener{listener.onClick(请求[position])}
}
}
}
在这里您可以看到,
请求
是一个
房间
实体,它有其内部类
适配器
和接口
OnClickListener
在实体中拥有这些东西是好的做法还是不好的做法?如果是坏的做法,那么最佳做法是什么?

根据规则,每个班级都应该有单一的责任。您可以在
适配器的
内部类中设置
ViewHolder
。接口和实体应该分开。

根据规则,每个类都应该有单独的责任。您可以在
适配器的
内部类中设置
ViewHolder
。接口和实体应该分开