android autocompletetextview 自定义,Android AutoCompleteTextView控件使用实例

AutoCompleteTextView autoComplete = new AutoCompleteTextView(context);

autoComplete.setThreshold(2);      // 设置最少几个字符触发自动完成

MyAdapter adapter = new MyAdapter(context);

autoComplete.setAdapter(adapter);

/**

* Adapter定义

*/

class MyAdapter extends ArrayAdapter implements Filterable{

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// define your list item view here 在此处定义列表项的视图

}

/**

* 实现自动完成的过滤算法

*/

@Override

public Filter getFilter() {

Filter filter = new Filter() {

/**

* 本方法在后台线程执行,定义过滤算法

*/

@Override

protected FilterResults performFiltering(CharSequence constraint) {

String keyword = String.valueOf(constraint).toLowerCase();

// 此处实现过滤

// 过滤后利用FilterResults将过滤结果返回

FilterResults filterResults = new FilterResults();

filterResults.values = results;   // results是上面的过滤结果

filterResults.count = results.size();  // 结果数量

return filterResults;

}

/**

* 本方法在UI线程执行,用于更新自动完成列表

*/

@Override

protected void publishResults(CharSequence constraint, FilterResults results) {

if (results != null && results.count > 0) {

// 有过滤结果,显示自动完成列表

MyAdapter.this.clear();   // 清空旧列表

MyAdapter.this.addAll((List)results.values);

notifiDataSetChanged();

} else {

// 无过滤结果,关闭列表

notifyDataSetInvalidated();

}

}

/**

* 如果需要控制提示文本的显示方式,重载此函数

*/

@Override

public CharSequence convertResultToString(Object resultValue) {

MyObject obj = (MyObject) resultValue;

return obj.name;

}

};

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值