一个简单的listview关键字筛选功能,在网上了一些,其它都是筛选后并没有点击获取其内容,直接上代码:
public class EditTextListView extends Activity {
//按钮静态缓存,该用法可以避免使用startActivityForResult来获取按钮返回的时间
public static Button btn;
private EditText edit_search;
private ListView lv;
private EditTextListViewAdapter adapter;
List<ValueNameDomain> list = new ArrayList<ValueNameDomain>();//所有的数据list
List<ValueNameDomain> newlist = new ArrayList<ValueNameDomain>();//查询后的数据list
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.edittextlistview);
init();
initDefaultLists();
}
//初始化控件
private void init() {
edit_search = (EditText) findViewById(R.id.edit_search);
//为输入添加TextWatcher监听文字的变化
edit_search.addTextChangedListener(new TextWatcher_Enum());
adapter = new EditTextListViewAdapter(this, list);
lv = (ListView) findViewById(R.id.edittextListview);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new onclick());
}
//添加数据
private void initDefaultLists() {
ValueNameDomain domain = new ValueNameDomain();
for (int i = 1; i <= 20; i++) {
domain = new ValueNameDomain();
domain.setName("1" + i);
domain.setValue(i + "");
list.add(domain);
}
}
//当editetext变化时调用的方法,来判断所输入是否包含在所属数据中
private List<ValueNameDomain> getNewData(String input_info) {
//遍历list
for (int i = 0; i < list.size(); i++) {
ValueNameDomain domain = list.get(i);
//如果遍历到的名字包含所输入字符串
if (domain.getName().contains(input_info)) {
//将遍历到的元素重新组成一个list
ValueNameDomain domain2 = new ValueNameDomain();
domain2.setName(domain.getName());
domain2.setValue(i + "");
newlist.add(domain2);
}
}
return newlist;
}
//button的点击事件
class onclick implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
TextView text = (TextView) view.findViewById(R.id.tvData);
String str = (String) text.getText();
btn.setText(str);
EditTextListView.this.finish();
}
}
//TextWatcher接口
class TextWatcher_Enum implements TextWatcher {
//文字变化前
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
//文字变化时
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
newlist.clear();
if (edit_search.getText() != null) {
String input_info = edit_search.getText().toString();
newlist = getNewData(input_info);
adapter = new EditTextListViewAdapter(EditTextListView.this,
newlist);
lv.setAdapter(adapter);
}
}
//文字变化后
@Override
public void afterTextChanged(Editable s) {
}
}
需要源码点击这里: 源码