Android ListView列表筛选功能的简单实现

一个简单的ListView的筛选功能

筛选原理:获取Spinner所选的选项 然后对整个ListView列表进行循环判定 把不符合选项的列删除,重新筛选其他选项的时候 重新获取一下初始列表 再进行筛选。(自己突发奇想的小方法,可能不是最好的,但贵在功能可以实现且方法简单方便理解)。

效果图
在这里插入图片描述

xml文件 (一个Spinner 和 一个ListView)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:padding="50dp"
    android:layout_height="match_parent">

    <Spinner
        android:entries="@array/saixuan"
        android:popupBackground="#00BCD4"
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </Spinner>

    <ListView
        android:id="@+id/lv4"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>

java(这里就不把listview的使用放上来了,只提供筛选功能的代码块)

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
     @Override
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                data.clear();        //防止出现列表数据叠加的情况
                indatas();   //每次筛选前先重新获取一遍数据(方法里面是listview上传列表数据的代码)
                myAdapter.notifyDataSetChanged();        //列表更新
                String str=spinner.getSelectedItem().toString();   //获取所需要筛选出来的类型
                if (!str.equals("全部")){      // 全部 时不进行筛选
                    for (int a=0;a<data.size();a++){     //对列表每列都进行对比
                        if (!data.get(a).getTxv().equals(str)){   //当列表与选项不符合时
                            data.remove(a);      //移除当前列
                            a--;       //每次执行删除一个 size 都要减少 1 (因为列表中减少了一列)
                        }
                        myAdapter.notifyDataSetChanged();    //每次删除后更新列表
                    }
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) { }
        });

同理这个可以应用到按钮的点击事件上,代码基本上是一摸一样的,把spinner的点击事件换成button的点击事件即可!

发布了6 篇原创文章 · 获赞 5 · 访问量 240

猜你喜欢

转载自blog.csdn.net/qq_44720366/article/details/103495894