Android:带有默认建议的AutoCompleteTextView

7

用户在输入之前,如何为AutoCompleteTextView显示一些默认建议?即使创建一个扩展AutoCompleteTextView的自定义类,我也找不到这样做的方法。

我想显示常见输入值的建议,以节省用户的输入时间。

有什么建议吗?

3个回答

5
你需要创建AutoCompleteTextView的子类,并重写enoughToFilter()方法,使其始终返回true。之后,你可以调用performFiltering("",0)方法(它是受保护的,所以你可以通过在你的类中公开一个函数来导出此调用)。
就像这样:
public class ContactsAutoCompleteTextView extends AutoCompleteTextView {


    public ContactsAutoCompleteTextView(Context context) {
        super(context);
    }

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean enoughToFilter() {
        return true;
    }

    public void temp() {
        performFiltering("",0);
    }
}

2
Itay Kahana的回答是正确的。我想补充的是,可以重写onFocusChanged函数而不是创建一个temp()函数。个人使用以下代码:
 @Override
        protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect) {
            if(focused)
                performFiltering("", 0);
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
        }

-1
如果您不需要它是动态的,我建议在资源中使用字符串数组,然后在即将查看AutoCompleteTextView时仅加载该数组。例如:
 public class CountriesActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.countries);

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, COUNTRIES);
         AutoCompleteTextView textView = (AutoCompleteTextView)
                 findViewById(R.id.countries_list);
         textView.setAdapter(adapter);
     }

     private static final String[] COUNTRIES = new String[] {
         "Belgium", "France", "Italy", "Germany", "Spain"
     };
 }

可以在http://developer.android.com/reference/android/widget/AutoCompleteTextView.html找到。

另一种方法是使用数据库连接和简单的游标,让它从用户那里学习。创建数据库时,您可以插入一些默认值。以下是使用简单游标适配器的示例:http://androidcommunity.com/forums/f4/how-to-use-autocompletetextview-with-simplecursoradapter-15875/

编辑1:

一个显示列表的想法是在EditText下面放置一个简单的ListView。不确定是否可以调用autocompletetextview来显示建议,但应该有可能。也许您需要创建自己的autocompletetextiew类。


David,你的答案只会在用户开始输入时显示列表。我想要的是在用户开始输入之前就显示建议列表(不一定是动态的)。有什么想法吗? - Kenny Ma
哦,我猜我有点累了。我会看看能想出什么。如果我想到了新的东西,我会编辑我的答案。 - David Olsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接