interface ItemClickListener {
fun transferData(data : **I want to add any type item as per recyclerview click**)}
我有2种不同类型的对象要传输,例如地址,用户。
data class Address(
val city_name : String?,
val address_line_one : String?,
val address_line_two : String?,
val pin_code: String?)
data class User(
val name : String?,
val age: Int?,
val gender: String?)
我想实现这一点,如果我单击用户列表项,然后将用户单击的项通过界面传递,如果我单击地址列表,然后将地址单击的项通过界面传递。
根据注释,您可以使用密封类来实现此目的,代码将如下所示:
// the sealed class
sealed class Data {
data class Address(
val city_name : String?,
val address_line_one : String?,
val address_line_two : String?,
val pin_code: String?) : Data()
data class User(
val name : String?,
val age: Int?,
val gender: String?): Data()
}
// interface
interface ItemClickListener {
fun transferData(data : Data)
}
// implementation, this could be in your activity/fragment
class Try: ItemClickListener {
override fun transferData(data: Data) {
when(data) {
is Data.Address -> {
// handle when data is address
}
is Data.User -> {
// handle when data is User
}
}
}
}