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 ...
随机推荐
- BZOJ1170 : [Balkan2007]Cipher
首先对于每个位置,求出它开始长度为y的横行的hash值,然后对于hash值再求一次竖列的hash值,排序后求出众数即可. 时间复杂度$O(n^2\log n)$. #include<cstdio ...
- BZOJ2915 : [Poi1997] gen
设f[i][j]表示串ij可以由哪些字母成长过来,用二进制压位表示. 设g[i][j]表示给定串中[i,j]这个区间一开始可以由哪些字母成长多来,用二进制压位表示. 设h[i]表示给定串前i位最少需要 ...
- 使用Puppeteer进行数据抓取(四)——图片下载
大多数情况下,图片获取并不是很困难的事情,获取图片的url,然后模拟浏览器请求即可.但是,有的时候这种方法往往无法生效,常见的情形有: 动态图片,每次获取都是一个新的,例如图片验证码,重新获取时是一个 ...
- securecrt中文乱码以及ubuntu设置locale
参考文献 http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale http://www.bootf.com/547.html 强烈建议 ubuntu下面不 ...
- 【Unity 3D】碰撞检测
在unity3d中,能检测碰撞发生的方式有两种, 碰撞器 触发器 概念: (一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞 ...
- IE中div被视频遮住的解决方法
使用embed来内嵌视频,因为视频是windows media player,上面想用div浮动一些内容,之前尝试了一些方法,比如 1. 通过设定不同组件的z-index值 2. 通过设定 wmode ...
- Android开发:仿美团下拉列表菜单,帮助类,复用简单
近期在项目中须要用到下拉菜单.公司比較推崇美团的下拉菜单,于是要实现该功能.想着.这个功能应该是一个常常会用到的.于是何不写一个帮助类,仅仅要往这个类里面传入特定的參数,既能够实现下来菜单,并且还能够 ...
- [Git]git教程
摘要 目前公司项目逐渐都要迁移到git上,使用git进行版本控制及源代码管理. git学习资料 一个小时学会Git 权威Git书籍ProGit(中文版) git官网:http://git-scm.co ...
- CreateJs入门必知必会
CreateJS介绍 CreateJS是基于HTML5开发的一套模块化的库和工具.基于这些库,可以非常快捷地开发出基于HTML5的游戏.动画和交互应用.CreateJS主要包含如下四个类库: Ease ...
- sql select 0 字段
关于 select 语句中 0 某字段名字,的意思是:该某字段是不在指定的表中的,那么如果要在子查询中利用这个指定的表,且带有这个字段,那么就用这个方式来添加该字段,并以0来初始化该字段. 如下例: ...