TextField和ListContainer实现简单的模糊搜索功能
Tiechui.Wang 2021-01-18 12:19:00 发布3018 浏览 14 点赞 15 收藏
所需要的代码如下,
public class MyProvider extends RecycleItemProvider {
private List<String> mSourceList;
private List<String> mList;
private NameFilter mNameFilter;
public MyProvider(List<String> list) {
this.mList = list;
this.mSourceList = list;
}
@Override
public int getCount() {
return null!=mList?mList.size():0;
}
@Override
public Object getItem(int i) {
return null!=mList?mList.get(i):null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
return null;
}
@Override
public TextFilter getFilter() {
if(mNameFilter==null){
mNameFilter = new NameFilter();
}
return mNameFilter;
}
class NameFilter extends TextFilter{
@Override
protected FilterResults executeFiltering(CharSequence charSequence) {
FilterResults filterResults = new FilterResults();
if(charSequence==null){
filterResults.results=mSourceList;
}else{
List<String> filteredList= new ArrayList<>();
for (Iterator<String> iterator = mList.iterator();iterator.hasNext();){
String name = iterator.next();
if(name.contains(charSequence)){
filteredList.add(name);
}
}
filterResults.results = filteredList;
}
return filterResults;
}
@Override
protected void publishFilterResults(CharSequence charSequence, FilterResults filterResults) {
mList = (List<String>) filterResults.results;
if(filterResults.size>0){
notifyDataChanged();
}else{
notifyDataInvalidated();
}
}
}
}
textField.addTextObserver(new Text.TextObserver() {
@Override
public void onTextUpdated(String s, int i, int i1, int i2) {
if(s.length()==0){
textField.removeTextObserver(this);
provider.getFilter().filter(s);
provider.notifyDataChanged();
textField.addTextObserver(this);
}else {
textField.removeTextObserver(this);
provider.getFilter().filter(null);
provider.notifyDataChanged();
textField.addTextObserver(this);
}
}
});©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它
标签
鸿蒙
相关推荐
鸿蒙实战项目案例_从零构建完整应用的完整复盘
周正
353
0鸿蒙NFC开发实战:从读卡器模式到卡模拟的完整实现
周正
95
0鸿蒙加密存储开发:数据安全保护的完整方案
周正
479
0鸿蒙应用签名与上架完整流程:从开发到发布的实战指南
周正
959
0鸿蒙版本兼容处理实战:让你的应用完美适配各版本系统
周正
54
0
Tiechui.Wang
我还没有写个人简介......
1091
帖子
0
提问
893
粉丝
最新发布
华为应用市场增长优化师火热认证中
2025-03-10 10:16:02 发布华为应用市场斩获Pocket Gamer2023年移动游戏奖,全球第三大移动应用生态获行业认可
2024-04-27 11:06:07 发布热门推荐