android - 如何制作自定义 AutocompleteTextView 并保持默认布局
问题描述
我正在尝试实现一个 autocompleteTextView,如果没有搜索,则显示所有结果或包含搜索的结果(如果有)。
如果可能,所有这些都使用 autocompleteTextView 的默认 Ui(因为我喜欢它并且我更喜欢开发新功能)
这是我所拥有的:
fun setUpIngredientTypeAutoComplete() {
val activityContext = activity?.applicationContext
if (activityContext != null) {
val adapter = IngredientTypesAdapter(activityContext,
android.R.layout.simple_dropdown_item_1line,
ingredientTypes)
val textView =
dialogView.findViewById<InstantAutoCompleteTextView>
(R.id.ingredient_type)
textView.setAdapter<ArrayAdapter<String>>(adapter)
}
}
我的数组适配器:
class IngredientTypesAdapter(context: Context, resource: Int, var
ingredientTypes: List<String>): ArrayAdapter<String>(context, resource,
ingredientTypes) {
override fun getFilter(): Filter {
return object : Filter() {
override fun performFiltering(constraint: CharSequence?):
FilterResults {
val filterResults = FilterResults()
if (constraint != null) {
val matchingTypes = ingredientTypes.filter { type ->
type.contains(constraint)
}
filterResults.values = matchingTypes
filterResults.count = matchingTypes.size
}
return filterResults
}
override fun publishResults(contraint: CharSequence, results:
FilterResults?) {
if (results != null && results.count > 0) {
notifyDataSetChanged()
} else {
notifyDataSetInvalidated()
}
}
}
}
}
我的自定义 autocompleteTextView :
class InstantAutoCompleteTextView(context: Context, attrs: AttributeSet?,
defStyle: Int, defStyleRes: Int): AutoCompleteTextView(context, attrs,
defStyle) {
constructor(context: Context): this(context, null, 0)
constructor(context: Context, attrs: AttributeSet): this(context, attrs, 0)
}
这就是我得到的:!(https://ibb.co/4Skx1Gn)
它甚至不可用......我无法点击它,没有编辑文本。
我究竟做错了什么 ?
解决方案
推荐阅读
- scheme - 如何在方案中使用延续?
- c++ - 函数调用错误中的参数过多
- go - 使用 go mod 下载时出现“模式匹配无模块依赖项”的原因是什么?
- django - href 没有发送好的链接信息
- angular - 为什么“angular is running in the development mode”多次打印?
- git - 如何防止 git 打包目标文件?
- python - 如何在函数类中保存临时数据?
- c++ - 为什么初始化 char*[] 需要 const 而 string[] 不需要?
- lua - 匹配字符串中所有小写字母的模式
- spring-boot - Netflix-zuul 无法在 docker 中路由 Spring Boot 微服务 API