如何使用自定义对象按值获取位置微调器?
How to kotlin getposition spinner by value with custom object?
我正在尝试使用自定义对象制作微调器。
当我从微调器中获取位置时,我得到结果 -1。我不知道原因
这是我的代码:
型号
class User(var name: String?, var mail: String?) {
override fun toString(): String {
return name.toString()
}
}
Activity
val userList = ArrayList<User>()
val user1 = User("Jim","jim@gmail.com")
userList.add(user1)
val user2 = User("John","john@gmail.com")
userList.add(user2)
val user3 = User("peki", "pek@gmail.com")
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","pek@gmail.com"))
Toast.makeText(this, (ambilPosisi).toString(), Toast.LENGTH_LONG).show()
只需将您的 User
class 声明为 data class:
data class User(var name: String?, var mail: String?)
它将生成equals()
和toString()
方法。所以你可以在对象比较中使用它。
您正在尝试呼叫
adapter.getPosition()
在实际上不在提交给适配器的列表中的项目上。您正在创建一个新的 User 实例作为函数调用的参数,尽管它与 user3 具有相同的字段,但并不引用相同的变量。
通话中
adapter.getPosition(user3)
应该return正确的索引。
我正在尝试使用自定义对象制作微调器。 当我从微调器中获取位置时,我得到结果 -1。我不知道原因
这是我的代码:
型号
class User(var name: String?, var mail: String?) {
override fun toString(): String {
return name.toString()
}
}
Activity
val userList = ArrayList<User>()
val user1 = User("Jim","jim@gmail.com")
userList.add(user1)
val user2 = User("John","john@gmail.com")
userList.add(user2)
val user3 = User("peki", "pek@gmail.com")
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","pek@gmail.com"))
Toast.makeText(this, (ambilPosisi).toString(), Toast.LENGTH_LONG).show()
只需将您的 User
class 声明为 data class:
data class User(var name: String?, var mail: String?)
它将生成equals()
和toString()
方法。所以你可以在对象比较中使用它。
您正在尝试呼叫
adapter.getPosition()
在实际上不在提交给适配器的列表中的项目上。您正在创建一个新的 User 实例作为函数调用的参数,尽管它与 user3 具有相同的字段,但并不引用相同的变量。
通话中
adapter.getPosition(user3)
应该return正确的索引。