listView filter过滤

本文通过实例演示了如何在ListView中实现filter过滤功能,分别展示了使用ArrayAdapter和BaseAdapter的情况,提供相关Java代码示例,并提供了Demo下载链接。

先看例子演示:

第一个是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手机助手下载:源码下载,源码例子文档一网打尽。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值