listView filter过滤

【Android开发】实现ListView的A-Z字母排序与过滤搜索功能:移动端列表展示性能优化及高级特性集成教程 内容概要:本文档详细介绍了在Android应用中实现ListView的A-Z字母排序和过滤搜索功能的完整教程。首先阐述了功能的重要性,即在移动端列表展示中,A-Z排序和搜索过滤是提升用户体验的关键。接着列出了所需的开发环境,包括Android Studio版本、JDK版本以及最低支持的API等级。核心实现部分涵盖了数据模型的准备,自定义适配器的设计,以及排序和搜索功能的具体实现方法。为了提高性能,文档还提供了异步数据处理、分页加载和视图复用优化等方案。此外,文档还讨论了高级功能扩展,如字母索引条、拼音搜索支持和界面分组展示。最后,给出了完整的实现流程图,并强调了一些需要注意的事项,例如内存管理和数据更新策略。 适合人群:具备一定Android开发经验的研发人员,尤其是对ListView有需求的开发者。 使用场景及目标:①掌握如何在Android应用中实现高效的A-Z字母排序和搜索过滤功能;②了解并应用性能优化方案,确保应用在各种设备上都能流畅运行;③学习如何扩展ListView功能,如添加字母索引条和拼音搜索支持,以增强用户体验。 阅读建议:此教程不仅提供了详细的代码示例和技术细节,还关注了性能优化和用户体验的提升。因此,在学习过程中,建议读者结合实际项目进行实践,并注意代码中的性能优化技巧和高级功能的应用。 立即下载

先看例子演示:

第一个是arrayAdapter,第二个是baseAdapter



部分java代码:

package mm.shandong.com.testbaseadapterfilter;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;


import java.util.ArrayList;
import java.util.List;

import mm.shandong.com.testbaseadapterfilter.adapter.BaseAdapterFilter;
import mm.shandong.com.testbaseadapterfilter.entity.Person;

public class TestBaseAdapterFilterActivity extends AppCompatActivity {
    ListView listView1;
    ListView listView2;
    EditText editText;
    List<Person> persons;
    String[] person_names;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_base_adapter_filter);
        listView1 = (ListView) findViewById(R.id.listView1);
        listView2 = (ListView) findViewById(R.id.listView2);
        //查询编辑框
        editText = (EditText) findViewById(R.id.editText);
        initData();
        //listView1放置arrayAdapter,arrayAapter自带过滤字符串的filter
        ArrayAdapter arrayAdapter1 =
                new ArrayAdapter(this,
                        android.R.layout.simple_list_item_1,
                        person_names);
        final BaseAdapterFilter arrayAdapter2 =
                new BaseAdapterFilter(this, persons);
        listView1.setAdapter(arrayAdapter1);
        listView1.setTextFilterEnabled(true);//关键代码
        //listView2放置baseAdapter,baseAdapter没有自带的过滤功能,
        // 需要在adapter中实现过滤功能
        listView2.setAdapter(arrayAdapter2);
        editText.addTextChangedListener(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) {
                String key = charSequence.toString();
                if (TextUtils.isEmpty(key)) {
                    listView1.clearTextFilter();
                } else {
                    listView1.setFilterText(key);
                }
                arrayAdapter2.getFilter().filter(charSequence);
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

    }
    //初始化数据源
    public void initData() {
        person_names = new String[]{"张三",
                "曹操", "王二", "张飞", "赵云", "刘备"};
        persons = new ArrayList<Person>();
        Person person = new Person("张三", 20, "1001");
        persons.add(person);
        person = new Person("李四", 21, "1002");
        persons.add(person);
        person = new Person("王二", 22, "1003");
        persons.add(person);

        person = new Person("张飞", 23, "1004");
        persons.add(person);
        person = new Person("赵云", 24, "1005");
        persons.add(person);
        person = new Person("马岱", 25, "1006");
        persons.add(person);
    }

}

Demo下载

微博:honey_11


最后,以上例子都来源与安卓学习手册,请去360手机助手下载:源码下载,源码例子文档一网打尽。

Keil中搭建自动化单元测试框架Unity 前言:   虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动化测试框架。Unity是一个简单且直接的自动化单元测试框架,它由很少的几个文件构成。 搭建环境:   1.从github上下载最新版本的Unity源码,下载链接:https://github... 阅读详情

相关推荐

MATLAB仿真实战:双有源桥(DAB)变换器的扩展移相调制(EPS)全流程解析

本文提供了一份详细的MATLAB/Simulink仿真实战指南,手把手解析双有源桥(DAB)变换器在扩展移相调制(EPS)下的全流程建模。内容涵盖从核心原理、主功率电路搭建、EPS驱动信号生成,到仿真运行、波形分析及模型优化的完整步骤,旨在帮助工程师和研究者快速掌握DAB变换器的仿真与性能验证方法。

o4p5q6r7s的博客 504

android list 过滤 指定list的内容

有这样一个场景,我获取所有包名,现在要给它建立一个黑名单,黑名单里面的内容要过滤掉 /** * 从 mAllList 中去除所有 mSubList 中与之重复的元素 * @param mAllList * @param mSubList * @return */ public static List<String> getF...

cau_eric的专栏 3914

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 395

android 集合 过滤,列表视图过滤器Android

如果还有人对这个主题感兴趣,我发现筛选列表的最佳方法是创建一个泛型过滤器类,并将其与Java OldSchoolSDK包中包含的一些基本反射/泛型技术一起使用。以下是我所做的:publicclassGenericListFilterextendsFilter{/***Copycatconstructor*@paramlisttheoriginallisttobeus...

weixin_36137509的博客 376

[小梅哥FPGA] 如何通过动态重配置实现FPGA时钟的实时频率/相位/占空比调整?

PLL和MMCM是实际存在的硬件电路,用以对输入时钟的负面变化,如抖动、频率变化、相位偏移、占空比失真等进行处理。基于该表,用户在初始化Clk_Wiz后,只需要计算好所需的频率、相位、占空比对应的设置值,使用Xil_Out32函数配置对应寄存器即可。通过上述步骤,在平时的开发调试过程中,亦或是一些对于时钟可能有着实时性要求的设计(如数据采集、图像处理)里,我们便可以在无需重新修改设计的前提下,通过AXI4总线来完成对时钟频率、相位的调控,从而达到缩短设计周期以及让设计适应更多场景的目的。

zgmxs的专栏 2495

USB3.0一致性测试方案

为各测试项目具体测试结果包括脉冲串突发时间、脉冲串重复时间、时钟周期以及眼图等完整USB3.0测试项目,工程师可以看到各项测试的具体结果方便观察。RIGOL 提供了一套完善的工具,包括数字示波器、专业的测试夹具以及全自动一致性测试软件,使得USB 3.0设备设计人员能够高效精确地进行信号捕捉、测试与分析。报告第二部分测试摘要,在此可以看到USB3.0测试所有测试项目,并且可以观看到测试是否正常,可以帮助工程师更好的判断测试结果。,以简化下载、存储以及对于多媒体的大量内容的共享。

2409_87378937的博客 2530

Android filter 和 map: 列表操作的强大工具

在Android开发中,我们经常需要对列表数据进行操作和转换。在这篇博客中,我们将介绍两个强大的列表操作工具:filter 和 map。这些函数可以帮助我们更轻松地处理和转换列表数据,提高开发效率和代码可读性。

jiet_h的博客 737

Visual SLAM算法笔记

最近在学习SLAM算法,这里作为阅读笔记记录和总结一下。对经典的单目SLAM/VO算法做了摘要和总结,比如Nister VO、MonoSLAM、PTAM、ORB-SLAM、LSD-SLAM、SVO、DSO等,对几个单目和IMU的融合算法也做了简单总结,比如MSCKF、OKVIS、IMU-Preintegration等。

MulinB的技术博客 3万+

Android数据过滤器:Filter

类图:

岁月静好 1万+

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6882

【为K8s的coredns配置上游DNS服务器】

为K8s的coredns配置上游DNS服务器一、背景描述二、如何修改coredns达到目的三、修改coredns 解析指定域名走指定dns①、get coredns configmap②、修改coredns configmap③、查询现有coredns pod并逐个重启④、验证解析是否正确 一、背景描述 有一个项目需要部署到客户内网,并通过nat映射实现外网访问! 项目中有多个服务之间调用是走的外网域名,项目采用k8s集群容器部署,客户的网络情况导致服务之间通过外网域名互调时总是 connection ti

那个那个 6671

推荐文章:优雅的Android列表过滤库 —— Awesome Listview Filter

推荐文章:优雅的Android列表过滤库 —— Awesome Listview Filter 1、项目介绍 在Android开发中,高效的列表视图管理和强大的过滤功能是提升用户体验的关键。Awesome Listview Filter 是一个精心设计的开源项目,它为开发者提供了美观的透明固定分组以及搜索功能,使得数据展示既高效又易于操作。该项目借鉴了Android开源项目的部分源码并进行了优化,...

gitblog_00077的博客 460

2023华为OD面试手撕真题【最长公共前缀】

2023华为OD面试手撕真题【最长公共前缀】

MISAYAONE的博客 5242

android listview 过滤,Android 利用SearchView实现ListView过滤

使用自定义的Adapter1.[代码][Java]代码package org.load.searchView;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.MenuItemComp...

weixin_42355204的博客 252

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 数据过滤器,Android数据过滤器:Filter

类图: 通常可以将SearchView和ListView结合,实现数据的搜索和过滤。1.监听SearchView,SearchView.setOnQueryTextListener(OnQueryTextListener listener);2.开启ListView的过滤功能,listView.setTextFilterEnabled(true)。必须开启,否则不会过滤;3..当SearchVie...

weixin_36373787的博客 1259

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

用edittext做自定义listview搜索过滤器

package Adapters; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.zip.Inflater; import com.example.qduniversityjobhelper.R; import Beans.Job

kaka 727

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Filter 过滤器

一、结构     public abstract class Filter extends Object   java.lang.Object      android.widget.Filter     二、概述     过滤器通过过滤模式来约束数据,通常由实现了Filterable接口的子类来生成。 过滤操作是通过调用 filter(CharSequence) 或者 filter

robert的专栏 3695

Android利用Filter过滤数据

MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; import android.os.Bundle; import android.widget.ListView; import android.app.Activity; impor...

weixin_30888027的博客 70

Android数据过滤器Filter探索之使用与改造(一)

由于数据过滤使用较为普遍,特此把Google官方提供的Filter类以及Filterable接口写成一个系列的文章,从使用到源码深入分析,供大家一起分享学习先附上效果图:使用场景:一般都是通过EditText中关键字搜索,实现ListView的数据过滤,得到含有关键字的数据。那么Filter类在其中的角色就是过滤者。完成过滤任务后,它会返回过滤后的匹配数据源。在开始研究Filter的使用前,我们先

wzg466959515的博客 1万+

BaseAdapter使用Filter笔记

public class MyProductAdapter extends BaseAdapter implements Filterable { private Context mContext; private final List mList; private List mSearchList; private LayoutInflater inflater; public M

LGL的专栏 1005

Filter(三)——Android利用Filterable接口过滤数据

MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; import android.os.Bundle; import android.widget.ListView; import android.app.Activity; import android

谷哥的小弟 5687

android定时更新listview,如何动态更新Android上的ListView

炎炎设计首先,您需要创建一个具有EditText和ListView的XML布局。xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientati...

weixin_39814960的博客 300
上一篇: ListView ArrayAdapter
下一篇: listView三级联动
androidWuYou
博客等级 码龄10年 51粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值