【问题标题】:How to kotlin getposition spinner by value with custom object?如何使用自定义对象按值获取 kotlin getposition spinner?
【发布时间】:2020-01-06 17:41:49
【问题描述】:

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

这是我的代码:

型号

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

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

活动

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()

【问题讨论】:

    标签: kotlin spinner


    【解决方案1】:

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

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

    它将生成equals()toString() 方法。所以你可以在对象比较中使用它。

    【讨论】:

      【解决方案2】:

      你正在尝试打电话

      adapter.getPosition()
      

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

      打电话

      adapter.getPosition(user3)
      

      应该返回正确的索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        相关资源
        最近更新 更多