2

我正在使用 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"/>
4

3 回答 3

2

看看这段代码。它基本上是 SDKArrayAdapter类的代码,稍作修改(不算)。如果您只想在 中显示一个建议,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();
于 2012-12-03T18:44:15.277 回答
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;
        }
    }
于 2015-06-02T10:22:25.940 回答
0

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

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

于 2016-04-30T15:49:38.163 回答