这篇应该是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实现高亮搜索列表的更多相关文章

  1. android中RecyclerView控件的列表项横向排列

    本文是在上一篇文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml:我这里是把新闻标题挪到了新闻图片的下面显示 <?xml vers ...

  2. Android开发——RecyclerView实现下载列表

    本篇记录的是使用Jsoup框架爬取网页内容,结合Android的RecyclerView,从而实现批量下载小说的功能(也是我的APP星之小说下载器Android版的核心功能),思路仅供参考 本文使用了 ...

  3. Android之RecyclerView(一)

    概述 RecyclerView 是一个 ViewGroup,它用于渲染任何基于适配器的 View.它被官方定义为 ListView 和 GridView 的取代者,是在 Support V7 包中引入 ...

  4. Android 基于Socket的聊天应用(二)

    很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...

  5. 基于bootstrap的jQuery多级列表树插件 treeview

    http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/20150 ...

  6. 基于bootstrap的jQuery多级列表树插件

    简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一 ...

  7. [Android]使用RecyclerView替代ListView(一)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4232560.html RecyclerView是一个比List ...

  8. Android基于XMPP的即时通讯3-表情发送

    这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs ...

  9. Android基于XMPP Smack openfire 开发的聊天室

    Android基于XMPP Smack openfire 开发的聊天室(一)[会议服务.聊天室列表.加入] http://blog.csdn.net/lnb333666/article/details ...

随机推荐

  1. HQL的内连接查询

    /** * HQL的内连接查询 * String hql="from Customer c inner join fetch c.linkmans"; */ @Test publi ...

  2. MikroTik RouterOS使用VirtualBox挂载物理硬盘作为虚拟机硬盘进行安装

    说明:这一切似乎在Windows下更好操作.虚拟机操作不是难点,难点在于虚拟磁盘的转换挂载 一.先挂载硬盘 # 创建虚拟镜像并映射到物理硬盘 cd "c:\Program Files\Ora ...

  3. dubbox REST服务使用fastjson替换jackson

    上一节讲解了resteasy如何使用fastjson来替换默认的jackson,虽然dubbox内部采用的就是resteasy,但是大多数情况下,dubbox服务是一个独立的app,并不需要以war包 ...

  4. USBDM RS08/HCS08/HCS12/Coldfire V1,2,3,4/DSC/Kinetis Debugger and Programmer -- Driver Install

    Installation of USBDM USB drivers for Windows There are four installers provided: USBDM_Drivers_x_x_ ...

  5. 使用log4jdbc记录SQL信息

    一.log4jdbc的简单介绍 使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况. 平时开发使用的ibatis,hibernate,spring jdbc的sq ...

  6. 解决SVN CONNOT VERIFY LOCK ON PATH NO MATCHING LOCK-TOKEN AVAILABLE

    最近使用SVN,开发项目的时候,璞玉遇到一个问题.就是: connot verify lock on path  no matching lock-token available   connot v ...

  7. cvCreateStumpClassifier

    CV_BOOST_IMPL CvClassifier* cvCreateStumpClassifier( CvMat* trainData, //训练样本的数据,包含图像大小.数量,类别,权重等 in ...

  8. .NET:Attribute 入门(内训教程)

    背景 接触过的语言中,C#(.NET 平台的多数语言都支持).Java 和 Python 都支持这个特性,本文重点介绍 C# 中的应用,这里简单的对 C#.java 和 Python 中的 Attri ...

  9. 用UIInterpolatingMotionEffect产生透视效果

    用UIInterpolatingMotionEffect产生透视效果 效果 源码 https://github.com/YouXianMing/Animations // // MotionEffec ...

  10. MYSQL 1093 之You can't specify target table for update in FROM clause解决办法

    You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据. 出现以上错误,是因为想将表自身的字 ...