我有一个数据类,它是一个房间实体,下面是代码
@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]) }
}
}
}
[在这里您可以看到Request
是一个Room
实体,并且它具有其内部类Adapter
和接口OnClickListener
,在实体内部拥有这些东西是一个好习惯,或者如果不是一个好习惯,那么该怎么做?最佳实践?
根据SOLID规则,每个班级应负单一责任。您可以将ViewHolder
设为Adapter
内部类。接口和实体应该分开。