AutoCompleteTextView结合自定义适配器

来源:互联网 发布:mac如何更改用户名称 编辑:程序博客网 时间:2024/05/21 17:51

转载地址:http://www.pocketdigi.com/20130124/981.html?utm_source=tuicool

这里没有用CursorAdapter,而是自己继承BaseAdapter写了个适配器.
与ListView不同,AutoCompleteTextView的适配器除了继承BaseAdapter外,还要实现Filterable接口。Filterable接口中有个getFilter方法,用于获取过滤器,我们需要自己写个继承Filter的过滤器,实现数据库查询。
代码使用了androidannotations.

import java.util.ArrayList;import java.util.List; import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Filter;import android.widget.Filterable;import android.widget.ImageView;import android.widget.TextView;import cn.jtang.discussion.R;import cn.jtang.discussion.db.UserDB;import cn.jtang.discussion.mode.User; import com.googlecode.androidannotations.annotations.Bean;import com.googlecode.androidannotations.annotations.EBean;import com.googlecode.androidannotations.annotations.RootContext; @EBeanpublic class LoginUsernameAdapter extends BaseAdapter implements Filterable {LayoutInflater mInflater;ArrayList<User> users;String key;@RootContextContext context;@BeanUserDB userDb;DBFilter filter;@Overridepublic int getCount() {// TODO Auto-generated method stubif (users != null && users.size() > 0) {return users.size();}return 0;} @Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn users.get(position);} @Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;} @Overridepublic View getView(final int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif (mInflater == null) {mInflater = LayoutInflater.from(context);}final User user = users.get(position); View view = mInflater.inflate(R.layout.item_actv_username, null);TextView tv_username = (TextView) view.findViewById(R.id.tv_username);tv_username.setText(user.getUsername());ImageView iv_delete = (ImageView) view.findViewById(R.id.iv_delete);//添加点击事件iv_delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//点击后删除用户userDb.deleteUser(user);users.remove(position);notifyDataSetChanged();}});return view;}/** * 获取过滤器 */@Overridepublic Filter getFilter() {// TODO Auto-generated method stubif (filter == null) {filter = new DBFilter();}return filter;} /** * 数据库查询过滤器 *  * @author Administrator *  */private class DBFilter extends Filter {/** * 查询数据库 */@Overrideprotected FilterResults performFiltering(CharSequence prefix) {// TODO Auto-generated method stub//查询结果保存到FilterResults对象里FilterResults results = new FilterResults();List<User> queryUsers = userDb.query(prefix.toString());results.values = queryUsers;results.count = queryUsers.size();return results;} /** * 更新UI */@Overrideprotected void publishResults(CharSequence constraint, FilterResults results) {// TODO Auto-generated method stubList<User> queryUsers = (List<User>) results.values;//把结果读取出复制到users里if (users == null) {users = new ArrayList<User>();}if (users.size() > 0) {users.clear();} if (queryUsers != null && queryUsers.size() > 0)for (User user : queryUsers) {users.add(user);notifyDataSetChanged();}} }}

© 2013, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记



注意:注意参考Filter的用法!

0 0
原创粉丝点击