Android自动化怎样获取提示内容,Android中AutoCompleteTextView自动提示

我们使用控件AutoCompleteTextView 自动提示时,有时需要设置BaseAdapter,设置BaseAdapter时,需要实现Filterable,手动进行筛选。

cb05cea9a4f19b39c478c8ea2649b967.png

常用属性

布局只设置了至少输入一个字符显示提示

android:id="@+id/at"

android:completionThreshold="1"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

private List allData = new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

allData.add("aa");

allData.add("bb");

allData.add("cc");

allData.add("dd");

allData.add("abc");

allData.add("bcd");

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.at);

MyAdapter adapter = new MyAdapter();

textView.setAdapter(adapter);

}

adapter适配器代码

class MyAdapter extends BaseAdapter implements Filterable {

DataFilter filter;

ArrayList data;

@Override

public int getCount() {

if (data != null && data.size() > 0) {

return data.size();

}

return 0;

}

@Override

public Object getItem(int i) {

return null;

}

@Override

public long getItemId(int i) {

return 0;

}

@Override

public View getView(int position, View view, ViewGroup viewGroup) {

TextView textView = new TextView(MainActivity.this);

textView.setText(data.get(position));

return textView;

}

@Override

public Filter getFilter() {

if (filter == null) {

filter = new DataFilter();

}

return filter;

}

private class DataFilter extends Filter {

@Override

protected FilterResults performFiltering(CharSequence prefix) {

//查询结果保存到FilterResults对象里

FilterResults results = new FilterResults();

List queryData = new ArrayList<>();

for (int i = 0; i < allData.size(); i++) {

if (allData.get(i).contains(prefix.toString())) {

queryData.add(allData.get(i));

}

}

results.values = queryData;

results.count = queryData.size();

return results;

}

/**

* 更新UI

*/

@Override

protected void publishResults(CharSequence constraint, FilterResults results) {

List queryData = (List) results.values;

if (data == null) {

data = new ArrayList<>();

}

if (data.size() > 0) {

data.clear();

}

if (queryData != null && queryData.size() > 0)

for (String string : queryData) {

data.add(string);

notifyDataSetChanged();

}

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值