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 ...
随机推荐
- CI Weekly #22 | flow.ci 新版 iOS 构建流程的 4 大变化
好久不见,最近 flow.ci 针对 iOS 项目重新设计了创建项目的流程,较之前相比有 4 个变化: 在创建项目阶段加入项目有效性检测,大大减少了构建失败率,有问题早发现! 在创建项目阶段加入项目配 ...
- 有向图强连通分量的Tarjan算法和Kosaraju算法
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...
- 喵哈哈村的魔法考试 Round #5 (Div.2) 题解
老规矩 有问题直接联系我:475517977@qq.com A 直接暴力的for一遍,统计连续的有多少个就好了.模拟题. #include<bits/stdc++.h> using nam ...
- POJ 1741 Tree (树分治入门)
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8554 Accepted: 2545 Description ...
- Eclipse 正则表达式 查找与替换
CTRL + space in the textboxes gives you all kinds of suggestions for regular expression writing. 查找 ...
- STL中经常使用数据结构
STL中经常使用的数据结构: [1] stack.queue默认的底层实现为deque结构. [2] deque:用map管理多个size大小的连续内存块,方便头尾插入. [3] vector: ...
- [转载]vs2017与docker
基本需求 系统 win10 vs2017 docker 步骤 1.开启系统的hyper-v 2. 重启电脑 3.安装docker 下载地址:https://docs.docker.com/docker ...
- C#输出到Release VS中Release模式下生成去掉生成pdb文件
Release 与 Debug 的区别就不多说了, 简单来说 Release 优化过, 性能高一些. Debug 为方便调试. 默认情况下是 Debug, 那如何改成 Release 呢? 项目上右键 ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- Xcode下修改plist文件
plist文件在Mac OS下的重要性,如同Windows下的注册表文件.而很多场景下面,我们需要修改plist文件来实现一些"自动化"操作 Mac OS本身提供了一个工具:P ...