如何避免在使用AutoComplteTextView时调用toString()



我需要一些帮助来理解这个问题。我有一个由AutoCompleteTextView表示的下拉菜单。每当我从菜单中选择一个选项时,我都会设置一个要显示的字符串。但问题是,在显示String之前,我会看到我的对象.toString((我知道,如果我在对象类中更改为String,我就不会再有问题了。但是我需要toString((函数保持不变。有办法做到这一点吗?我的适配器

class CustomAdapter(context: Context, @LayoutRes val id: Int, private val items: List<Data>) : ArrayAdapter<Data>(context, id, items) {
private val inflater by lazy { LayoutInflater.from(context) }

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = inflater.inflate(id, null)
val neededData = items[position].neededData
val textView = view?.findViewById<TextView>(R.id.needed_item)
textView?.text = neededData
return view!!
}
}

这就是我设置适配器的方式

context?.let { context ->
dropdown.setAdapter(ClassName.CustomAdapter(
context = context,
id = R.layout.item,
items = viewModel.dataList
))
dropdown.onItemClickListener = createListener()
}

对象中的ToString

override fun toString() = "Data(" +
"neededData='$neededData', " +
"extraData=$extraData, "
")"

当我在下拉列表中选择选项时,在几秒钟内,我可以看到来自toString((函数的extraData,只有在那时neededData才被设置为

因此,找到了解决方案。我只需要重写Adapter中的Filter和convertResultToString(resultValue:Any?(:CharSequence。现在一切都很完美

最新更新