Android基于RecyclerView实现高亮搜索列表
这篇应该是RecycleView的第四篇了,RecycleView真是新生代的宠儿能做这么多的事情。
转载请注明作者AndroidMsky及原文链接
http://blog.csdn.net/AndroidMsky/article/details/53306657
本文Github:欢迎star
https://github.com/AndroidMsky/SearchView
话不多说先看今天的实现的效果:
相信这样的效果非常多项目都会用到,今天就讲讲利用RecycleView来实现他,博主把此篇文章定位0基础篇,可能由于这确实非常easy,所以我要更要讲的具体一点让新手也能够能看的懂。
饭要開始做了,我们要准备哪些食材呢。
1.一个RecyclerView或是listview或是其它能够显示多item的控件(基本的干货)
2.搞清楚EditText的实时监听
3.让一个textview出现不同的颜色
4.怎样穿过Adpter找出textview中key值(也就是高亮字符串)
当你打通这四个技术点后。假设还不能实现这样的效果,那么你能说你如今的学习太死板,不会活学活用。假设你看到效果立刻想到这四个技术点说明你有一定的项目组织能力了。接下来我们就解析一下这个四个食材。
1.RecyclerView犹豫这里比較简单能够使用原声的RecyclerView。可是笔者一直在用封装好的RecyclerView所以还用我之前封装好的来实现假设对RecyclerView还不熟悉的传送门送你走:
http://blog.csdn.net/androidmsky/article/details/52922348
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<Customer> list, Context context, String key) {
super(list);
mContext = context;
mkey = key;
this.list = list;
}
好的4个食材我们就准备好了
烹饪逻辑例如以下:
1.注冊生产全部类。
2.在实时监控edittext的回调接口中又一次构造CustomerCampanySearchAdapter传入新的key值。
public void showCustomer(List<Customer> 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
https://github.com/AndroidMsky/SearchView
欢迎加作者自营安卓开发交流群:308372687
博主原创未经同意不得转载。转载必究
—————————————————————————————
作者推荐: 安卓自己定义view滚动数据显示
http://blog.csdn.net/androidmsky/article/details/53009886
RecyclerView下拉刷新分页载入性能优化和Gilde配合载入三部曲
http://blog.csdn.net/androidmsky/article/details/53115818
打造企业级网络请求框架集合retrofit+gson+mvp
http://blog.csdn.net/androidmsky/article/details/52882722
安卓手机自己主动接起QQ视频秒变摄像头
http://blog.csdn.net/androidmsky/article/details/53066441 —————————————————————————————
Android基于RecyclerView实现高亮搜索列表的更多相关文章
- android中RecyclerView控件的列表项横向排列
本文是在上一篇文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml:我这里是把新闻标题挪到了新闻图片的下面显示 <?xml vers ...
- Android开发——RecyclerView实现下载列表
本篇记录的是使用Jsoup框架爬取网页内容,结合Android的RecyclerView,从而实现批量下载小说的功能(也是我的APP星之小说下载器Android版的核心功能),思路仅供参考 本文使用了 ...
- Android之RecyclerView(一)
概述 RecyclerView 是一个 ViewGroup,它用于渲染任何基于适配器的 View.它被官方定义为 ListView 和 GridView 的取代者,是在 Support V7 包中引入 ...
- Android 基于Socket的聊天应用(二)
很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...
- 基于bootstrap的jQuery多级列表树插件 treeview
http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/20150 ...
- 基于bootstrap的jQuery多级列表树插件
简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一 ...
- [Android]使用RecyclerView替代ListView(一)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4232560.html RecyclerView是一个比List ...
- Android基于XMPP的即时通讯3-表情发送
这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs ...
- Android基于XMPP Smack openfire 开发的聊天室
Android基于XMPP Smack openfire 开发的聊天室(一)[会议服务.聊天室列表.加入] http://blog.csdn.net/lnb333666/article/details ...
随机推荐
- LightOJ 1366 - Pair of Touching Circles (统计矩形内外切圆对)
1366 - Pair of Touching Circles PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limi ...
- Unity3D对安卓盒子的支持
一般的安卓盒子主要按键包含 1.方向键:上下左右 2.确认 3.返回 4.音量(Unity无法获取),须要在安卓层将事件发上来,KeyCode = 24,25 基本的函数是 if (Input.Get ...
- 京东SSO单点登陆实现分析
京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该 ...
- dos下 和 批处理中的 for 语句的基本用法
for 语句的基本用法 : 最复杂的for 语句,也有其基本形态,它的模样是这样的: 在cmd 窗口中:for %I in (command1) do command2 在批处理文件中:for % ...
- .Net Discovery系列之十二-深入理解平台机制与性能影响(下)
上一篇文章中Aicken为大家介绍了.Net平台的垃圾回收机制.即时编译机制与其对性能的影响,这一篇中将继续为大家介绍.Net平台的异常捕获机制与字符串驻留机制. 三.关于异常捕获机制 虽然我们已经很 ...
- svn : Can not Parse lock / entries hashfile错误解决办法
svn服务器死机重启之后,锁定文件的时候出下面的提示: Malformed file svn: Can't parse lock/entries hashfile '/data/svn/svnroot ...
- ASP.NET MVC下实现前端视图页的Session
在ASP.NET MVC的控制器中可以实现Session处理.如果要在前端视图页实现Session该如何做呢?可以使用window.sessionStorage来做. AlexChittock用jQu ...
- Task Parallel Library02,更进一步
在前一篇中,了解了Task的基本用法 如果一个方法返回Task,Task<T>,如何获取Task的返回值,获取值的过程会阻塞线程吗? static void Main(string[] a ...
- UITabBarController 详解之 hidesBottomBarWhenPushed的正确用法
今天说的是在TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题. 之前项目也需要这么做,那时候iOS7还没出,也是各种搜罗,后来的解决方法是当push操作的时候自己隐藏Tabbar,p ...
- 【python】python彻底卸载的方法【windows安装版卸载的示例】
要想彻底干净的卸载python,如果是使用的安装版的话,其实很简单.[windows安装版] 就是点击安装包. 例如,当前你安装的版本是3.6.5,你想要把它卸载掉. 查看python版本的命令: 只 ...