Autocompletetextview只显示项目值(城市),当点击时获取2个值。
创始人
2024-09-22 20:31:37
0

您可以使用自定义的适配器来实现这个功能。下面是一个示例代码:

  1. 创建一个自定义的适配器类:
class CityAdapter(context: Context, private val cities: List) : ArrayAdapter(context, 0, cities) {

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        val view = convertView ?: LayoutInflater.from(context).inflate(android.R.layout.simple_dropdown_item_1line, parent, false)
        val city = cities[position]
        val textView = view.findViewById(android.R.id.text1)
        textView.text = city.name
        return view
    }

    override fun getFilter(): Filter {
        return object : Filter() {
            override fun performFiltering(constraint: CharSequence?): FilterResults {
                val results = FilterResults()
                results.values = if (constraint.isNullOrEmpty()) cities else cities.filter { it.name.contains(constraint.toString(), ignoreCase = true) }
                results.count = (results.values as List).size
                return results
            }

            override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
                @Suppress("UNCHECKED_CAST")
                clear()
                addAll(results?.values as List)
                notifyDataSetChanged()
            }

            override fun convertResultToString(resultValue: Any?): CharSequence {
                return (resultValue as? City)?.name ?: ""
            }
        }
    }
}
  1. 创建一个数据类来表示城市:
data class City(val name: String, val code: String)
  1. 在您的 Activity 或 Fragment 中使用 AutoCompleteTextView 和上面的适配器:
val cities = listOf(
    City("北京", "BJ"),
    City("上海", "SH"),
    City("广州", "GZ"),
    // 添加更多的城市...
)

val autoCompleteTextView = findViewById(R.id.autoCompleteTextView)
val adapter = CityAdapter(this, cities)
autoCompleteTextView.setAdapter(adapter)
autoCompleteTextView.setOnItemClickListener { parent, view, position, id ->
    val selectedCity = parent.getItemAtPosition(position) as City
    val cityName = selectedCity.name
    val cityCode = selectedCity.code
    // 处理点击事件,获取两个值 cityName 和 cityCode
}

这样,当用户在 AutoCompleteTextView 中输入文字时,它会根据输入的内容过滤出匹配的城市,并显示在下拉列表中。当用户选择一个城市时,您可以通过 OnItemClickListener 获取到选中的城市的名称和代码。

相关内容

热门资讯

2026版教程!werplan... 您好,德普之星透视这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在...
2026版教学!wepoker... 2026版教学!wepoker私人局辅助器怎么用,德普之星怎么设置埋牌,本来是真的有挂(真的有挂)该...
攻略辅助挂!hh poker插... 攻略辅助挂!hh poker插件下载,德扑之星透视,切实真的有挂(有挂头条)一、德扑之星透视游戏安装...
刚刚!wepoker究竟有没有... 刚刚!wepoker究竟有没有透视,德普之星私人局透视,一直存在有挂(有挂实锤)1、德普之星私人局透...
2026版软件!wejoker... 2026版软件!wejoker免费脚本,德普之星怎么开辅助,都是是真的有挂(有人有挂)1、许多玩家不...
今年以来!we-poker辅助... 今年以来!we-poker辅助器,德扑之星透视软件免费入口官网,都是确实有挂(有挂教学)德扑之星透视...
为切实保障!wepoker破解... 为切实保障!wepoker破解器激活码,德普之星怎么开辅助,总是确实有挂(有挂教程)1、德普之星怎么...
据公告内容!pokemmo辅助... 据公告内容!pokemmo辅助工具,德普辅助器怎么用,都是是有挂(真的有挂)1、德普辅助器怎么用模拟...
据文件显示!大菠萝免费辅助,德... 据文件显示!大菠萝免费辅助,德普之星透视免费,竟然真的有挂(有挂头条)1、据文件显示!大菠萝免费辅助...
近日!wpk插件,德普之星私人... 近日!wpk插件,德普之星私人局透视,都是存在有挂(有挂秘籍)1、进入到德普之星私人局透视是否有挂之...