Как отобразить другое значение в android в раскрывающемся списке - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть счетчик в android, который отображает языковые объекты. Я использую Realm в качестве базы данных, поэтому эти объекты выглядят так:

open class Language(

    @PrimaryKey
    var languageCode : String = "",

    var isoLanguageName : String = ""

) : RealmObject() {

    override fun toString(): String {
        return isoLanguageName
    }

}

Я хочу, чтобы счетчик отображал languageCode выбранного значения, но когда я открываю раскрывающийся список, должен отображаться isoLanguageNames.

Вот мой адаптер:

class LanguageAdapter(

    val context: Context?,
    data: RealmResults<Language>

) : RealmBaseAdapter<Language>(data), SpinnerAdapter {

    private class ViewHolder {
        lateinit var lang : TextView
    }

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        var view = convertView
        var viewHolder: ViewHolder

        if(view == null){
            view = LayoutInflater.from(context).inflate(R.layout.item_language, parent, false)
            viewHolder = ViewHolder()
            viewHolder.lang = view.findViewById(R.id.item_language_name)
            view.tag = viewHolder
        } else {
            viewHolder = convertView?.tag as ViewHolder
        }

        if(adapterData != null){
            val lang = adapterData!![position]
            viewHolder.lang.text = lang.languageCode
        }

        return view!!
    }

}

Я попробовал подход, упомянутый в этом ответе. Но это не работает, по крайней мере, не с RealmBaseAdapter, поскольку отображаемое значение всегда будет тем, что я назначу здесь:

viewHolder.lang.text = lang.languageCode

Так что, в отличие от ответа, адаптер не принимает toString ( ) значение по умолчанию для раскрывающегося списка и значение, назначенное в getView () для отображаемого значения, но просто принимает назначенное значение в getView () для обоих.

Кто-нибудь знает, как выполнить sh что я хочу сделать?

...