如何通过自定义对象的值来设置kotlin getposition旋转器?

问题描述 投票:0回答:2

我正在尝试使用自定义对象制作微调器。当我从微调器中获取位置时,得到的结果是-1。我不知道原因

这是我的代码:

型号

class User(var name: String?, var mail: String?) {

    override fun toString(): String {
        return name.toString()
    }
}

活动

val userList = ArrayList<User>()
val user1 = User("Jim","[email protected]")
userList.add(user1)
val user2 = User("John","[email protected]")
userList.add(user2)
val user3 = User("peki", "[email protected]")
userList.add(user3)


val adapter = ArrayAdapter<User>(this,
    android.R.layout.simple_spinner_item, userList
)
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner.setAdapter(adapter)

val ambilPosisi : Int =  adapter.getPosition(User("peki","[email protected]"))
Toast.makeText(this, (ambilPosisi).toString(), Toast.LENGTH_LONG).show()
kotlin spinner
2个回答
0
投票

只需将您的User类声明为data class

data class User(var name: String?, var mail: String?)

它将生成equals()方法。因此您可以在对象比较中使用它。


0
投票

您正在尝试致电

adapter.getPosition()

关于实际上不在提交给适配器的列表中的项目。您正在创建一个新的User实例作为函数调用的参数,尽管该实例与user3具有相同的字段,但并未引用相同的变量。

通话中

adapter.getPosition(user3)

应返回正确的索引。

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