列表视图过滤器 Android

2024-04-13

我在android中创建了一个列表视图,我想在列表上方添加编辑文本,当用户输入文本时,列表将根据用户输入进行过滤

谁能告诉我是否有办法在android中过滤列表适配器?


在列表视图的 .xml 布局文件中添加一个 EditText。 在你的活动/片段中..

lv = (ListView) findViewById(R.id.list_view);
    inputSearch = (EditText) findViewById(R.id.inputSearch);

// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name,    products);
lv.setAdapter(adapter);       
inputSearch.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
        // When user changed the Text
        MainActivity.this.adapter.getFilter().filter(cs);
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

    @Override
    public void afterTextChanged(Editable arg0) {}
});

这里的基本是添加一个OnTextChangeListener到您的编辑文本并在其回调方法内将过滤器应用于列表视图的适配器。

EDIT

要将过滤器添加到您的自定义 BaseAdapter,您需要实现可过滤界面。

class CustomAdapter extends BaseAdapter implements Filterable {

    public View getView(){
    ...
    }
    public Integer getCount()
    {
    ...
    }

    @Override
    public Filter getFilter() {

        Filter filter = new Filter() {

            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {

                arrayListNames = (List<String>) results.values;
                notifyDataSetChanged();
            }

            @Override
            protected FilterResults performFiltering(CharSequence constraint) {

                FilterResults results = new FilterResults();
                ArrayList<String> FilteredArrayNames = new ArrayList<String>();

                // perform your search here using the searchConstraint String.

                constraint = constraint.toString().toLowerCase();
                for (int i = 0; i < mDatabaseOfNames.size(); i++) {
                    String dataNames = mDatabaseOfNames.get(i);
                    if (dataNames.toLowerCase().startsWith(constraint.toString()))  {
                        FilteredArrayNames.add(dataNames);
                    }
                }

                results.count = FilteredArrayNames.size();
                results.values = FilteredArrayNames;
                Log.e("VALUES", results.values.toString());

                return results;
            }
        };

        return filter;
    }
}

Inside 执行过滤()您需要将搜索查询与数据库中的值进行实际比较。它将把结果传递给发布结果() method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表视图过滤器 Android 的相关文章

  • 像 Gmail 应用程序一样处理 Android WebView 中的外部链接

    我是一名网络开发人员 我目前正在 Android Studio 上使用 WebView 开发 Android 应用程序 该 WebView 将我的网站作为 Android 应用程序访问 我的一个网页包含许多外部链接 我的目标是让 Andro
  • 带有 API 21 的 Snackbar

    我正在尝试在我的应用程序中实现新的 Snackbars 但我做不到 首先 我从以下位置下载了 zip 文件这个 SnackBarSampleActivity https github com nispok snackbar blob mas
  • 无法解析:com.android.support:recyclerview-v7:28.1.1

    我正在尝试使用 RecyclerView 并添加了这一行implementation com android support recyclerview v7 28 0 0 alpha3 to my build gradle app 但它给出
  • 在 Fragment 和 Activity 之外通过 Hilt 进行现场注入

    我想知道是否可以在片段或活动之外使用字段注入 我知道我可以使用构造函数注入 但是我想知道是否也可以使用字段注入 我认为 Dagger 是可能的 当我尝试用注入的东西做某事时yclass字段我收到此错误 lateinit property y
  • 如何将值与数据库值进行比较

    我使用下面的代码在数据库中插入用户安装的应用程序包名称 并且插入成功 现在在日志中显示我想将系统安装的应用程序与此数据库值进行比较 并仅显示数据集中的值 那么我如何比较 我在这个括号中写了什么 if p packageName equals
  • 以编程方式设置 ListView 中的激活项

    我有一个简单的ListView与一些具有setChoiceMode set to ListView CHOICE MODE SINGLE 这意味着当我触摸某个项目时 它会突出显示 这样用户就可以看到什么菜单选项 ListView是一个菜单
  • 输入流返回 NullPointerException (Java)

    以下是出现 NullPointerException 错误的代码 InputStream is getAssets open twentyone txt InputStreamReader iz new InputStreamReader
  • 安卓。安装复杂的加密 obb 文件时出现 ERROR_COULD_NOT_MOUNT

    我开发 Android 应用程序 它使用加密的 obb 文件 这个obb文件由3个文件组成 我用jobb工具创建的 在大多数设备上一切正常 但在三个设备上存在 ERROR COULD NOT MOUNT 而且我不明白如何解决它 我想在没有任
  • 如何更改 Android 中状态栏通知图标的颜色/色调(棉花糖及 23+ 以上)?

    正如标题所示 如何将状态栏图标的颜色更改为深色而不是默认的白色 FROM TO 要使状态栏图标具有深色而不是默认的白色 请在您的styles xml 或者更准确地说 在values v23 styles xml file
  • xamarin 谷歌地图不工作

    我使用以下链接创建了地图http developer xamarin com guides android platform features maps and location maps part 2 maps api http deve
  • android:clickable="true" 意味着它不可点击?

    我有一个 ListView 其中包含一些自定义部分 每个部分都有自己的标题视图 我希望列表中的元素可单击 但显然不希望节标题可单击 所以在我添加的节标题的 xml 中android clickable false 调试时我注意到节标题仍然响
  • 在哪里存储字符串值?在 strings.xml 中还是在常量类中?

    在android中 我们可以将字符串值存储在strings xml文件中或某些常量类中作为静态最终变量 在某些情况下是否有理由选择一个而不是另一个 简而言之 代码中使用的值 始终使用常量类 优点 代码保持集成 并且您的包可以在其他项目 上下
  • 无法跳过某项活动

    我的 Android 应用程序有一个登录屏幕 用户登录到他的仪表板 但我不希望用户每次关闭应用程序并启动它时都登录 除非他们从仪表板注销 因此 我创建了一个类来检查用户是否登录 检查登录 java public class CheckLog
  • 如何在 Android webRTC 上启用 H264

    如何在 Android WebRTC 上启用 H264 PeerConnection to createOfferSDP中没有h264描述 由于某种原因 Google 默认会阻止他们自己的软件编解码器 因此 如果您的芯片组中没有硬件解码 或
  • 如何为高流量网络应用程序实现“保存搜索”功能?

    我想知道可以在 eBay 等大型网络应用程序上找到的 保存的搜索 功能 您可以做的就是保存搜索 例如 宾得镜头 50mm 1 4 每当有人出售符合搜索条件的新优质标准快速宾得镜头时 您都会收到通知 对我来说 实现此类功能并不是一件简单的事情
  • device_admin_sample.xml 放在哪里?

    在哪里放置 device admin sample xml 无论我把它放在哪里 它都会给出错误 device admin sample xml
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Android 堆栈溢出错误

    以下是我的堆栈跟踪 我浏览了它 但它只显示了一堆视图 坦率地说 我不太确定 stackoverflow 错误到底是什么 我读到了一些其他问题 有些人通过迭代解决了他们的问题 同样 不知道这些是什么 对于应用程序的基本布局 这是来自崩溃时 T
  • 无法解析类型 android.support.v4.app.Fragment。它是从所需的 .class 文件间接引用的,Facebook [重复]

    这个问题在这里已经有答案了 我想在 Facebook 中发布照片和文本 为此我使用了来自 Facebook 参考站点的以下代码 https developers facebook com docs android link to your
  • 指针问题! (安卓)

    我在 onTouch 方法中遇到多个指针的问题 所有指针都与一个布尔值相关联 如果向下则为 true 如果向上则为 false 非常重要的是 如果一个指针从 true 变为 false 它不会影响其他布尔值 我遇到的问题是 例如 当指针 1

随机推荐