AutoComplete不会返回所需的字符串

发布于 2025-02-02 13:16:41 字数 1565 浏览 4 评论 0原文

我是Kotlin编程的新手。在我的Android应用程序中,我有一个“ advellyInfo”对象的数组适配器 - 带有有关位置的数据的对象。

class addressInfo
(
var displayName : String,
var latitude : String,
var longitude : String,
var osmType : String,
var osmId : String,
var osmClass : String
)

以下是适配器的代码:

class AutoSuggestAdapter(context: Context, @LayoutRes private val layoutResource: Int) :
ArrayAdapter<addressInfo>(context, layoutResource), Filterable {
private val mlistData: MutableList<addressInfo>
private val TAG = "Adapter"

fun setData(list: List<addressInfo>?) {
    mlistData.clear()
    mlistData.addAll(list!!)
}

override fun getCount(): Int {
    return mlistData.size
}

@Nullable
override fun getItem(position: Int): addressInfo {
    return mlistData[position]
}

/**
 * Used to Return the full object directly from adapter.
 *
 * @param position
 * @return
 */
fun getObject(position: Int): addressInfo {
    return mlistData[position]
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    val view: TextView = convertView as TextView? ?: LayoutInflater.from(context).inflate(layoutResource, parent, false) as TextView
    var r = mlistData[position].displayName
    view.text = r
    return view
}

init {
    mlistData = ArrayList()
}
}

正确显示了建议,但是选择其中一个返回一些错误的文本(不是建议本身,可能是地址INFO对象的某些内部ID)。

我希望返回的是DisplayName字符串。如何解决这个问题?

I am new in Kotlin programming. In my android app, I have an array adapter of "addressInfo" objects - objects with data about a place.

class addressInfo
(
var displayName : String,
var latitude : String,
var longitude : String,
var osmType : String,
var osmId : String,
var osmClass : String
)

Following is the code for adapter:

class AutoSuggestAdapter(context: Context, @LayoutRes private val layoutResource: Int) :
ArrayAdapter<addressInfo>(context, layoutResource), Filterable {
private val mlistData: MutableList<addressInfo>
private val TAG = "Adapter"

fun setData(list: List<addressInfo>?) {
    mlistData.clear()
    mlistData.addAll(list!!)
}

override fun getCount(): Int {
    return mlistData.size
}

@Nullable
override fun getItem(position: Int): addressInfo {
    return mlistData[position]
}

/**
 * Used to Return the full object directly from adapter.
 *
 * @param position
 * @return
 */
fun getObject(position: Int): addressInfo {
    return mlistData[position]
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    val view: TextView = convertView as TextView? ?: LayoutInflater.from(context).inflate(layoutResource, parent, false) as TextView
    var r = mlistData[position].displayName
    view.text = r
    return view
}

init {
    mlistData = ArrayList()
}
}

The suggestions are shown correctly, but choosing one of them returns some wrong text (not the suggestion itself, probably some inner id of the addressInfo object).
Screenshot

What I wish to get returned is the displayName string. How to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城空念 2025-02-09 13:16:41

我设法将所需的字符串设置在OnItemClicklistener方法中:

autoCompleteTextView.onItemClickListener =
    OnItemClickListener { parent, view, position, id ->
            autoCompleteTextView.setText(autoSuggestAdapter!!.getObject(position).displayName)
    }

I managed to set the desired string inside onItemClickListener method:

autoCompleteTextView.onItemClickListener =
    OnItemClickListener { parent, view, position, id ->
            autoCompleteTextView.setText(autoSuggestAdapter!!.getObject(position).displayName)
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文