任何人都可以指导我如何在 android 中实现动态自动完成小部件。我的要求是,当我输入一个字母时,一个线程将工作并返回一个最多包含 5 个建议的数组。我需要在自动完成列表视图中显示这 5 条建议。
请专家指导如何实施。
期待,
问候,
罗尼
你看过 AutoCompleteTextView 吗?
它可以显示您想要的内容。现在您所需要的只是一个实现 Filterable 的适配器来生成五个一组。 Filterable 表示实体将能够创建 Filter 对象。过滤器对象使用线程池,并在单独的工作线程上分派过滤,并在 UI 线程上绑定到视图。
所以假设我们有
public class TextAdapter extends BaseAdapter implements Filterable {
List<String> myList;
Filter myFilter;
TextAdapter(String[] strings) {
myList = Arrays.asList(strings);
myFilter = new MyFilter(myList);
}
...
// implement the BaseAdapter methods as needed to manage the list.
//
public void setContents(List<String> strs) {
myList.clear();
myList.addAll(strs);
mFilter = new Filter(myList);
}
public Filter getFilter() {
return myFilter;
}
private final class MyFilter implements Filter {
final List<String> mOriginalList;
public MyFilter(List<String> list) {
mOriginalList = new ArrayList<String>(list);
}
public Filter.FilterResults performFiltering(CharSequence constraint) {
// Search through your original list
Filter.FilterResults results = new Filter.FilterResults();
List<String> strs = new ArrayList<String>();
if (TextUtils.isEmpty(constraint)) {
strs.addAll(myOriginalList);
}
for (String str : myOriginalList) {
if (matches(str, constraint)) {
strs.add(str);
}
}
if (results.size > 5) {
// prune the list to your own tastes
}
results.count = strs.size();
results.value = strs;
}
public void publishResults(CharSequence constraint, Filter.FilterResults results)
setContents((List<String>)results.value);
notifyDatasetChanged();
}
public boolean matches(String str, CharSequence value) {
/// implement this part
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)