Android中AutoCompleteTextView的特殊使用方法

AutoCompleteTextView是自动完成输入内容控件

其常用属性定义如下

<AutoCompleteTextView
   android:id="@+id/mp002_top_place_input"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:completionThreshold="1"
   android:layout_marginTop="5dp" >
</AutoCompleteTextView>

其中android:completionThreshold定义了从第几个字符开始显示候补列表

默认值为2

 

使用例:

AutoCompleteTextView mPlace = (AutoCompleteTextView)findViewById(R.id.mp002_top_place_input);

ArrayList<String> result = new ArrayList<String>();
result.add("1111111");
result.add("1222222");
mPlace.setAdapter(new ArrayAdapter<String>(
      MP002TopActivity.this,
      android.R.layout.simple_dropdown_item_1line,
      result)
);

 

局限性是completionThreshold设定的最小值是1

小于1的情况下,会默认变成1。

 

所以要在不输入任何字符的条件下显示候补列表

就必须重载AutoCompleteTextView这个控件。

 

public class MyAutoCompleteTextView extends AutoCompleteTextView{

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

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

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

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

  @Override
  protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
    super.onFocusChanged(focused, direction, previouslyFocusedRect);

    performFiltering(getText(), KeyEvent.KEYCODE_UNKNOWN);
  }

}

enoughToFilter()是判断输入文字列长度是否满足现实候补列表的要求的方法。

onFocusChanged()是当控件获得焦点时让其显示候补列表。

 

原文地址:http://blog.sina.com.cn/s/blog_54109a5801012pmi.html

posted @ 2013-10-27 21:45  左眼跳跳  阅读(197)  评论(0)    收藏  举报