首页 > 解决方案 > 如何制作自定义 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

它甚至不可用......我无法点击它,没有编辑文本。

我究竟做错了什么 ?

标签: androidautocompletetextview

解决方案


推荐阅读