将AutoCompleteTextView限制为仅一个结果

时间:2012-12-03 17:51:28

标签: android autocompletetextview

我正在使用AutoCompleteTextView和适配器的自定义布局。问题是我不知道如何限制一次只有一个结果,就像在默认布局中一样。 我读到可能限制高度,但不适用于所有屏幕。谢谢你的关注。

我在我的activity_main布局上有这个。

<AutoCompleteTextView android:id="@+id/autotext" 
android:layout_width="0dp" 
android:layout_height="wrap_content"
android:minWidth="480dp" 
android:layout_weight="1" 
android:maxLength="23" 
android:maxLines="1" 
android:textColor="#000000" />

这是适配器的布局。

<TextView android:id="@+id/textpop" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="17sp"/>

3 个答案:

答案 0 :(得分:2)

看看this code。它基本上是SDK ArrayAdapter类的代码,只需要很小的修改(不计算在内)。如果您只想在AutoCompleteTextView中显示一个建议,那么您可以对该类进行一次小修改,从链接到performFiltering()方法,如下所示:

// ... the rest of that method
if (newValues.size() > 1) { // if we have more than an item in the list
    // get the first suggestion
    T oneItem = newValues.get(0);
    // empty the suggestion list
    newValues.clear();
    // add the only suggestion.
    newValues.add(oneItem);
}
results.values = newValues;
results.count = newValues.size();

答案 1 :(得分:0)

我发现上述答案不能令人满意,而且链接已经死了。

要获得最简单的方法,请创建自定义适配器并简单地将计数强制为1

class SingleArrayAdapter extends ArrayAdapter<String> {

        public SingleArrayAdapter(Context context, int resource, String[] objects) {
            super(context, resource, objects);
        }

        @Override
        public int getCount() {
            return 1;
        }
    }

答案 2 :(得分:0)

您可以创建自己的AutoCompleteTextView适配器来实现Filterable接口,或者扩展现有的适配器,但是覆盖getFilter()方法,创建自己的过滤器实现,然后您可以自定义过滤器逻辑并返回您喜欢的任意数量的结果。

您可以参考ArrayAdpater中的ArrayFilter实现以供参考。