You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Kotlin中Android AutoCompleteTextView无法选择条目实现搜索功能

问题解决:AutoCompleteTextView下拉条目无法点击选择

问题原因分析

你的代码存在两个关键错误,导致setOnItemClickListener无法生效:

  1. ArrayAdapter构造参数错误:你传入了R.layout.activity_test(整个Activity的布局)作为下拉列表的item布局,同时将R.id.tvAutoComplete(AutoCompleteTextView自身的ID)指定为显示文本的控件ID。这会导致下拉列表的每个选项都加载整个Activity布局,布局层级混乱,点击事件无法被正确识别。
  2. Lambda语法错误:setOnItemClickListener的lambda表达式结尾写成了-,正确的应该是->,语法错误会导致点击事件监听器未被正确注册。

修复步骤

1. 使用正确的下拉item布局

你可以直接使用Android系统提供的默认下拉item布局android.R.layout.simple_dropdown_item_1line,也可以自定义一个简单的TextView布局(比如创建layout/item_dropdown.xml):

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="12dp"
    android:textSize="16sp"/>

2. 修正ArrayAdapter初始化代码

将ArrayAdapter的构造参数替换为正确的item布局:

val autoComplete: AutoCompleteTextView = findViewById(R.id.tvAutoComplete)
// 使用系统默认布局
val adapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, itemList)
// 如果用自定义布局,替换成:
// val adapter = ArrayAdapter(this, R.layout.item_dropdown, itemList)
autoComplete.setAdapter(adapter)

3. 修正点击事件的语法错误

把-改为->,确保监听器正确注册:

autoComplete.setOnItemClickListener { parent, view, position, id ->
    Log.d("Test", itemList[position])
}

完整修复后的代码示例

val itemList = ArrayList<String>()
// 假设此处已成功填充itemList数据

val autoComplete: AutoCompleteTextView = findViewById(R.id.tvAutoComplete)
val adapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, itemList)
autoComplete.setAdapter(adapter)

autoComplete.setOnItemClickListener { parent, view, position, id ->
    Log.d("Test", itemList[position])
}

内容的提问来源于stack exchange,提问作者Santi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:18:26