我们是否可以根据特定的recyclerview项目点击通过单个接口传递多种类型的对象(项目)

问题描述 投票:0回答:1
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?)

我想实现这一点,如果我单击用户列表项,然后将用户单击的项通过界面传递,如果我单击地址列表,然后将地址单击的项通过界面传递。

android android-recyclerview interface recycler-adapter onitemclicklistener
1个回答
1
投票

根据注释,您可以使用密封类来实现此目的,代码将如下所示:

// 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
            }
        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.