博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android基于RecyclerView实现高亮搜索列表
阅读量:6679 次
发布时间:2019-06-25

本文共 3115 字,大约阅读时间需要 10 分钟。

这篇应该是RecycleView的第四篇了,RecycleView真是新生代的宠儿能做这么多的事情。

转载请注明作者AndroidMsky及原文链接

本文Github:欢迎star

话不多说先看今天的实现的效果:

这里写图片描写叙述

相信这样的效果非常多项目都会用到,今天就讲讲利用RecycleView来实现他,博主把此篇文章定位0基础篇,可能由于这确实非常easy,所以我要更要讲的具体一点让新手也能够能看的懂。

饭要開始做了,我们要准备哪些食材呢。

1.一个RecyclerView或是listview或是其它能够显示多item的控件(基本的干货)

2.搞清楚EditText的实时监听
3.让一个textview出现不同的颜色
4.怎样穿过Adpter找出textview中key值(也就是高亮字符串)

当你打通这四个技术点后。假设还不能实现这样的效果,那么你能说你如今的学习太死板,不会活学活用。假设你看到效果立刻想到这四个技术点说明你有一定的项目组织能力了。接下来我们就解析一下这个四个食材。

1.RecyclerView犹豫这里比較简单能够使用原声的RecyclerView。可是笔者一直在用封装好的RecyclerView所以还用我之前封装好的来实现假设对RecyclerView还不熟悉的传送门送你走:

2.EditText事实输入监听,事实上就是个借口每次Editext中的字符发生改变会回调这个接口:

TextWatcher textWatcher = new TextWatcher() {        @Override        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {        }        @Override        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {        }        @Override        public void afterTextChanged(Editable editable) {        }    };

啪啪啪一注冊接口。onTextChanged就是我们想要的方法了:

editMobile.addTextChangedListener(textWatcher);

3.textview显示不同颜色,事实上这有非常多种实现方式,最笨的就是用两个或者说是用三个textview左右挨着实现高亮颜色,然而这并不科学,我们使用StringFormatUtil这样一个工具类来实现高亮颜色。

StringFormatUtil spanStr3 = new //各自是上下文,原串,key。高亮颜色。

StringFormatUtil(mContext, data.name, mkey, R.color.blue).fillColor(); customerHolder.tvName.setText(spanStr3.getResult());

4.Adapter怎样知道key。

在构造方法去传入就能够了:

public CustomerCampanySearchAdapter(List
list, Context context, String key) { super(list); mContext = context; mkey = key; this.list = list; }

好的4个食材我们就准备好了

烹饪逻辑例如以下:

1.注冊生产全部类。

2.在实时监控edittext的回调接口中又一次构造CustomerCampanySearchAdapter传入新的key值。

public void showCustomer(List
list, String key) { if (list == null || list.size() == 0) return; customerList.clear(); customerList.addAll(list); adapter = new CustomerCampanySearchAdapter(customerList, this, key); superRecyclerView.setAdapter(adapter); superRecyclerView.showData(); adapter.setOnItemClickListener(new BaseRecyclerAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position, long id) { // } }); }

3.在CustomerCampanySearchAdapter中的onBindViewHolder方法中改变Textview的高亮key值。

@Override    public void onBindViewHolder(BaseRecyclerViewHolder holder, int position, final Customer data) {        CustomerHolder customerHolder = (CustomerHolder) holder;        customerHolder.tvName.setText(data.name);        StringFormatUtil spanStr3 = new StringFormatUtil(mContext, data.name,                mkey, R.color.blue).fillColor();        if (spanStr3 != null)            customerHolder.tvName.setText(spanStr3.getResult());        else customerHolder.tvName.setText(data.name);    }

效果就这样完美实现了。也提倡大家在分析的时候一定要冷静。首先看懂自己要什么效果,之后就是你须要什么子效果,然后是怎么把这些子效果串起来实现终于的效果。

本文Github:欢迎star

欢迎加作者自营安卓开发交流群:308372687

这里写图片描写叙述

博主原创未经同意不得转载。转载必究

—————————————————————————————

作者推荐: 安卓自己定义view滚动数据显示
RecyclerView下拉刷新分页载入性能优化和Gilde配合载入三部曲
打造企业级网络请求框架集合retrofit+gson+mvp
安卓手机自己主动接起QQ视频秒变摄像头
—————————————————————————————

你可能感兴趣的文章
ERROR 1217 (23000): Cannot delete or update a pare
查看>>
oracle 11g RAC搭建 ASM存储
查看>>
函数学习-bytearray()
查看>>
CentOS7安装配置telnet-server
查看>>
GitOSC和GitHub上传项目
查看>>
全局静态变量析构和线程结束先后顺序问题
查看>>
[PYTHON] 核心编程笔记(12.Python模块)
查看>>
windows下MD5-SHA1校验
查看>>
Linux学习记录-2015-08-20--常用命令1
查看>>
Android工程引用另外一个工程的正确/错误方法
查看>>
Testlink使用介绍
查看>>
【动态规划】0-1背包问题原理和实现
查看>>
c3p0详细配置
查看>>
jsfl导出库里面的PNG图片
查看>>
PostgreSQL的MVCC vs InnoDB的MVCC
查看>>
COMP9321/19T1/resources/22490
查看>>
使用JSON实现分页
查看>>
如何优雅地使用Markdown (Sublime 3 + MarkdownEditing+OmniMarkupPreviewer)
查看>>
HTML+5+从入门到精通
查看>>
安全退出调用多个Activity的Application
查看>>