`

listView filter过滤

 
阅读更多

先看例子演示:

第一个是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下载


最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm.androidstudy,源码例子文档一网打尽。

分享到:
评论

相关推荐

    SearchView+ListView 数据过滤

    `Filterable`接口则使得`ListView`能够根据用户的搜索条件动态过滤数据,从而实时更新显示内容。下面将详细讲解这三个知识点。 1. **SearchView** `SearchView`是Android中的一个可扩展视图,通常放置于Action Bar...

    ListView实现字母过滤排序及搜索功能

    - 在适配器中实现`getFilter()`方法,返回一个过滤器实例,该过滤器将处理用户输入的字符,并更新ListView显示的数据。 - 在适配器的`bindView()`方法中,使用AlphabetIndexer的`getSectionForPosition(int ...

    实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

    在某些场景下,我们可能需要为ListView添加过滤功能,以便用户可以根据输入的关键字实时筛选显示的数据。在本教程中,我们将探讨如何实现一个基于BaseAdapter而非ArrayAdapter的ListView过滤功能。 首先,理解...

    安卓listview相关相关-过滤出多重选择的ListView.rar

    - 要在ListView中实现过滤功能,可以使用过滤器Filter接口。首先,Adapter需要实现Filterable接口,并提供filter方法来过滤数据。 - 用户输入的搜索关键字通过Filter的publishResults方法传递给Adapter,Adapter再...

    Android例子源码ListView字母排序带过滤搜索

    本项目主要涉及了ListView的高级用法,包括A-Z字母排序以及过滤搜索功能,这在处理如联系人信息等大量可分类数据时非常实用。下面我们将详细探讨这两个关键知识点。 1. **A-Z字母排序**: 在Android中,实现...

    ListView的字母排序和过滤搜索功能第四种效果

    本教程将深入探讨如何实现ListView的字母排序和过滤搜索功能,以创建类似通讯录的效果。我们参考的项目是"SortedContactUI-master",它展示了如何实现这一第四种效果。 首先,理解ListView的基本原理至关重要。...

    实现ListView的字母排序和过滤搜索功能(完整实例源码)

    4. **实时搜索**:当用户在SearchView中输入时,监听其`onQueryTextChange()`事件,调用Filter的`filter()`方法进行过滤操作,然后刷新ListView。 **三、完整实例** 1. 首先,创建一个自定义的ArrayAdapter,实现...

    在MVVM设置中对WPF ListView进行排序和过滤

    在MVVM(Model-View-ViewModel)架构下对WPF(Windows Presentation Foundation)ListView进行排序和过滤是一项常见的任务,尤其在构建数据驱动的应用程序时。MVVM是一种设计模式,它将用户界面(View)、业务逻辑...

    android EditText ListView进行检索排序

    如果`ListView`的适配器实现了`Filterable`接口,我们可以直接调用`getFilter()`方法进行过滤操作。 ```java adapter.getFilter().filter(searchText); ``` ### 3. 实现`Filterable`接口 为了让`ListView`的...

    ListView的字母排序和过滤搜索功能第三种效果

    在这个特定的案例中,我们关注的是ListView的两种增强功能:字母排序(Alphabetical Indexing)和过滤搜索(Filter Search)。这两种特性使得用户能够更方便地浏览和查找列表中的项目。 首先,让我们详细了解一下...

    listview 添加图片效果显示,加文字搜索提示

    这里涉及到过滤(Filter)的概念,可以通过对Adapter的数据集进行过滤,只保留包含搜索关键词的项。例如,可以创建一个自定义的ArrayAdapter,并实现Filterable接口: ```java public class CustomArrayAdapter ...

    拼音检索+ListView

    这里可能需要用到Filterable接口,通过实现filter()方法来处理过滤逻辑。过滤后,我们可以通过ListView的notifyDataSetChanged()方法通知ListView数据已改变,使其自动刷新显示。 至于标签"拼音",意味着我们要关注...

    ListView的字母排序和过滤搜索功能第二种效果

    适配器的`getFilter()`方法返回一个过滤器对象,该对象负责执行实际的过滤操作。过滤器的`performFiltering()`方法根据输入的关键字过滤数据,然后在`publishResults()`方法中通知ListView更新视图。 在提供的文件...

    ListView字母快速索引 自动过滤搜索

    "ListView字母快速索引 自动过滤搜索"这个主题涉及到两个重要的功能:字母快速索引(Section Indexer)和自动过滤搜索(Search Filter)。这两者都是提高用户体验的重要手段。 首先,我们来看一下字母快速索引。在...

    android edit listview 搜索框

    当搜索框中的内容改变时,我们需要根据新的搜索条件,调用Adapter的`getFilter().filter()`方法来过滤数据源,并通知ListView刷新视图。 4. **自定义过滤器**:如果默认的过滤器无法满足需求,可以自定义Filter实现...

    Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

    可以使用Java的`filter()`方法或者遍历整个数据集,根据关键字匹配数据项,生成新的过滤后的列表。 3. 更新ListView:使用过滤后的列表重新填充Adapter,并调用`notifyDataSetChanged()`通知ListView数据已更新。 ...

    listview ListView列表的A-Z字母排序和筛选功能

    3. 实时更新:筛选后,同样需要更新Adapter,以便ListView显示过滤后的结果。 四、优化性能 1. 使用ViewHolder模式:为了提高ListView的滚动性能,可以使用ViewHolder模式来缓存视图的子组件,减少findViewById()的...

    安卓listview相关相关-ListviewFilter.zip

    在该方法内,调用适配器的`getFilter().filter(text)`方法执行过滤。 4. **优化性能**:为了提高性能,可以在过滤过程中使用线程池或者异步处理,避免UI线程阻塞。 5. **自定义过滤规则**:根据业务需求,你可以...

    WPF ListView排序功能

    当ListView的ItemsSource是ICollectionView时,可以通过调用其SortDescriptions和Filter方法来实现排序和过滤。 - **SortDescriptions对象**:ICollectionView的SortDescriptions属性是一个SortDescription集合,...

    actionBar+searchView+listView实现搜索

    1. **创建自定义过滤器**:为了根据用户的搜索关键词过滤`ListView`的数据,我们需要创建一个实现了`Filterable`接口的适配器。例如,如果你使用的是`ArrayAdapter`,可以重写`getFilter`方法: ```java private ...

Global site tag (gtag.js) - Google Analytics