我正在使用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"/>
答案 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实现以供参考。