本来想找一个简化输入的注册工具包,找半天可能是关键字不对吧,导致没找到心里很恼火,所以自己写了个,这只是个小例子,我没有面向对象来写,因为还没头绪完成业务逻辑判断,后期我会完善成工具类,我也是初学者,希望可以帮助大家,也希望大手们能帮我一起完善这个小玩意。
package com.example.search;
import android.os.Bundle;import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ExpandableListView;
import android.widget.MultiAutoCompleteTextView;
public class MainActivity extends Activity {
AutoCompleteTextView actv;
MultiAutoCompleteTextView mauto;
ArrayAdapter<String> aa;
String[] books = new String[] { "@qq.com", "@sohu.com", "@163.com",
"@126.com" };
String[] book1 = new String[] { "@qq.com", "@sohu.com", "@163.com",
"@126.com" };
String input = null;
/**
* 此方法写在重写方法addTextChangedListener监听中的onTextChanged方法中,用于监听即时录入AutoCompleteTextView文本中
* 的内容input,在此之前你需要绑定按键AutoCompleteTextView;
* 根据你录入的内容来即时改变AutoCompleteTextView的adapter,然后绑定。
* 次方法没有匹配正则表达式,只是为了提供方便录入。(初期思想版,可能含有bug)
* @param input
* @param actv 绑定你要监听的AutoCompleteTextView
* @param aa AutoCompleteTextView的适配器
* @param books 你需要的基本后缀名数组,如果你不需修改你可以使用修饰符final绑定在函数中;
* @param book1 基本后缀名数组的备份
* @author sinner
*/
public void inti(String input, AutoCompleteTextView actv,
ArrayAdapter<String> aa, String[] books, String[] book1) {
input = actv.getText().toString();
if (!(input.contains("@"))) {
mauto.setText(actv.getText());
input = actv.getText().toString();
Log.d("input----", "" + input);
for (int i = 0; i < books.length; i++) {
Log.d("----" + i, books[i]);
books[i] = input + book1[i];
aa = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line, books);
actv.setAdapter(aa);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actv = (AutoCompleteTextView) findViewById(R.id.auto);
mauto = (MultiAutoCompleteTextView) findViewById(R.id.mauto);
actv.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
inti(input, actv, aa, books, book1);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
下面是布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionHint="请选择您的邮箱"
android:dropDownHorizontalOffset="10dp"
android:completionThreshold="1"
/>
<MultiAutoCompleteTextView
android:id="@+id/mauto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>
</LinearLayout>