package com.qf.day04_autocompletetextview;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
private String[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1, 得到控件初始化
AutoCompleteTextView autoView = (AutoCompleteTextView) findViewById(R.id.auto_id);
// 2, 得到数据源
data = new String[] { "android", "apple", "abc", "abcd", "c", "c++",
"c#", "abcdef" };
// 3, 定义适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, data);
// 4, 为控件设置适配器
autoView.setAdapter(adapter);
// 5, 设置监听器(文本改变监听器)
autoView.addTextChangedListener(new TextWatcher() {
/**
* 文本正在改变 CharSequence s : 文本变化后的内容 int start 被替换字符的起始下标 int before
* 被替换字符的数量 int count 替换进来新字符的数量
*/
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.i("info", "onTextChanged == > s = " + s + " , start = "
+ start + " , before = " + before + " , count="
+ count);
}
/**
* 文本变化之前 CharSequence s 变化之前的文字 int start 被替换进来字符的起始下标 int count
* 被替换的字符数量 int after 替换进来新字符的数量
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
Log.i("info", "beforeTextChanged == > S = " + s + " , start = "
+ start + " , count = " + count + " , after = " + after);
}
/**
* 文本改变之后 Editable s 变化之后文本的内容
*/
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Log.i("info", "afterTextChanged == > s " + s);
}
});
}
}
demo:
package com.example.day4homework2;
import java.util.HashMap;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private AutoCompleteTextView auto;
Map<String, Object> map;
String city[] = { "北京", "山东", "宁夏" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
auto = (AutoCompleteTextView) findViewById(R.id.au1);
map = new HashMap<String, Object>();
map.put("北京", new String[] { "海淀", "朝阳" });
map.put("山东", new String[] { "淄博", "青岛" });
map.put("宁夏", new String[] { "石嘴山", "银川" });
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_spinner_item, city);
auto.setAdapter(adapter);
// 为控件设置文本改变的监听器
auto.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@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
if (s.toString().equals("北京")) {
fangfa(s.toString());
}
if (s.toString().equals("山东")) {
fangfa(s.toString());
}
if (s.toString().equals("宁夏")) {
fangfa(s.toString());
}
}
});
}
public void fangfa(String s) {
StringBuffer buffer = new StringBuffer();
String[] value = (String[]) map.get(s);
for (String string : value) {
buffer.append(string + " ");
}
Toast.makeText(MainActivity.this, buffer.toString(), Toast.LENGTH_SHORT)
.show();
}
}