Android基于RecyclerView实现高亮搜索列表

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

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

http://blog.csdn.net/AndroidMsky/article/details/53306657

本文Github:欢迎star

https://github.com/AndroidMsky/SearchView

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

相信这种效果很多项目都会用到,今天就讲讲利用RecycleView来实现他,博主把此篇文章定位初级篇,可能因为这确实很简单,所以我要更要讲的详细一点让新手也可以能看的懂。

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

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 —————————————————————————————

时间: 2024-10-09 06:32:33

Android基于RecyclerView实现高亮搜索列表的相关文章

Android实现RecyclerView自定义列表、点击事件以及下拉刷新

Android使用RecyclerView 1. 什么是RecyclerView RecyclerView 是 Android-support-v7-21 版本中新增的一个 Widgets,官方对于它的介绍则是:RecyclerView 是 ListView 的升级版本,更加先进和灵活. 简单来说就是:RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持. 2.

【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

[Android 仿微信通讯录 导航分组列表-上]使用ItemDecoration为RecyclerView打造带悬停头部的分组列表 一 概述 本文是Android导航分组列表系列上,因时间和篇幅原因分上下,最终上下合璧,完整版效果如下: 上部残卷效果如下:两个ItemDecoration,一个实现悬停头部分组列表功能,一个实现分割线(官方demo) 网上关于实现带悬停分组头部的列表的方法有很多,像我看过有主席的自定义ExpandListView实现的,也看过有人用一个额外的父布局里面套 Rec

Android之RecyclerView(一)

概述 RecyclerView 是一个 ViewGroup,它用于渲染任何基于适配器的 View.它被官方定义为 ListView 和 GridView 的取代者,是在 Support V7 包中引入的.使用该组件的一个理由是:它有一个更易于扩展的框架,尤其是它提供了横向和纵向两个方向滚动的能力.当数据集合根据用户的操作或网络状态的变化而变化时,你很需要这个控件. 要使用 RecyclerView,需要以下的几个元素: RecyclerView.Adapter :使用RecyclerView之前

android 基于百度地图api开发定位以及获取详细地址

一:百度地图开发必须要到百度开发平台android开发api下载相应的库,已经申请百度地图开发key. 二:新建项目baidumaplocation.设计main.xml文件这里注意的是MapView控件必须使用来自百度库封装好的com.baidu.mapapi.MapView .设计代码如下: Xml代码   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q

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

http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/201502141379.html http://www.htmleaf.com/Demo/201502141380.html 简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和

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

这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs.com/files/pear-lemon/drawable.zip 2.表情布局文件layout_send_emotion.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln

基于python的种子搜索网站-开发过程

本讲会对种子搜索网站的开发过程进行详细的讲解. 源码地址:https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django开发的一套web网站,做为本人的毕业设计.本人的研究方向是一项关于搜索的研究项目.在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新. 网站域名为bt.mypython.me 启动项目 django-admin startproject bt 创建应用 python3 manag

SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) Input 输入第一行为整数n(0< n <100),表示数据的组数.对于每组数据,第一行是三个整数k,m,t(0<

Android 自定义RecyclerView 实现真正的Gallery效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38173061 ,本文出自:[张鸿洋的博客] 上一篇博客我使用自定义HorizontalScrollView写了一个具有HorizontalScrollView效果和ViewPager特性的横向图片轮播,详见:Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果.其实制作横向滚动的不得不说另一个控件,就是Google