android 控件AutoCompleteTextView实战

首先自定义一个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 defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

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

在layout里定义自定义的AutoCompleteTextView

<com.dukelight.testandroidm.MyAutoCompleteTextView
    android:id="@+id/act_main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:completionThreshold="1"
    android:dropDownHorizontalOffset="10dp"
    android:text="" >

    <requestFocus />
</com.dukelight.testandroidm.MyAutoCompleteTextView>

最后就是Activity里的调用代码

public class TestAutoCompleteActivity extends Activity {


    String[] place = new String[]{"白云", "广州", "五山", "天河", "越秀", "二电厂", "大学城", "中山"};
    @InjectView(R.id.act_main)
    MyAutoCompleteTextView mActMain;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_test_complete);
        ButterKnife.inject(this);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, place);
        mActMain.setAdapter(arrayAdapter);

        mActMain.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // 手动向下弹出匹配的菜单        
                mActMain.showDropDown(); 
                return false;
            }
        });
    }
}

最后的最后放上效果图片

空字符串显示全部 匹配字符串显示