7

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

我想显示常见输入值的建议,以使用户免于输入。

有什么建议么?

4

3 回答 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);
    }
}
于 2011-09-06T09:54:31.363 回答
2

Itay Kahana 的回答确实是正确的。我唯一要补充的是,不是创建 temp() 函数,而是覆盖 onFocusChanged 函数。我个人使用了以下内容:

 @Override
        protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect) {
            if(focused)
                performFiltering("", 0);
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
        }
于 2012-01-14T17:57:06.593 回答
-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上找到

我已经做过几次允许它向用户学习的另一种方法是使用带有 IE 的数据库连接一个简单的光标。创建数据库时,您可以插入一些默认值。这是使用简单光标适配器的示例:http ://androidcommunity.com/forums/f4/how-to-use-autocompletetextview-with-simplecursoradapter-15875/

编辑1:

在用户开始输入之前显示列表的一个想法是在 EditText 下方有一个简单的列表视图。不确定您是否可以调用 autocompletetextview 来显示建议,应该以某种方式实现。也许您需要创建自己的 autocompletetextiew 类。

于 2011-07-07T23:49:35.460 回答