Android可筛选的弹窗控件CustomFiltControl

CustomFiltControl是一款基于Android平台的可筛选的弹窗控件,能够极大地提高用户选择筛选条件的效率和便捷性。下面将为大家提供CustomFiltControl的完整攻略。

一、控件使用说明

1.1 导入依赖库

首先,在您的Android项目中的build.gradle文件中添加以下依赖:

implementation 'com.github.xlxsam:CustomFiltControl:1.0.3'

1.2 引入控件

在您需要使用CustomFiltControl控件的xml布局文件中添加以下代码:

<com.sam.customfilterproject.view.CustomFiltControlView
    android:id="@+id/customFiltControlView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:background_color="@color/bg_common_white"
    app:arrow_color="@color/colorAccent"
    app:arrow_width="12dp"
    app:arrow_height="6dp"
    app:text_color="@color/tv_common_black"
    app:text_size="14sp"
    app:spacing="6dp"
    app:checked_bg_color="#c054bfaf"
    app:unchecked_bg_color="#c0601931" />

1.3 设置数据源

在Activity或Fragment的代码中,设置CustomFiltControl控件的数据源,这里提供两个示例:

示例一

CustomFiltControlView customFiltControlView = findViewById(R.id.customFiltControlView);
final List<FilterTab> filterTabList = new ArrayList<>();
FilterTab filterTab1 = new FilterTab(1, "标签1");
FilterTab filterTab2 = new FilterTab(2, "标签2");
FilterTab filterTab3 = new FilterTab(3, "标签3");
filterTabList.add(filterTab1);
filterTabList.add(filterTab2);
filterTabList.add(filterTab3);
List<FilterItem> filterItemList = new ArrayList<>();
FilterItem filterItem1 = new FilterItem(10, "选项1", 1);
FilterItem filterItem2 = new FilterItem(11, "选项2", 1);
FilterItem filterItem3 = new FilterItem(12, "选项3", 1);
FilterItem filterItem4 = new FilterItem(13, "选项4", 2);
FilterItem filterItem5 = new FilterItem(14, "选项5", 2);
FilterItem filterItem6 = new FilterItem(15, "选项6", 3);
filterItemList.add(filterItem1);
filterItemList.add(filterItem2);
filterItemList.add(filterItem3);
filterItemList.add(filterItem4);
filterItemList.add(filterItem5);
filterItemList.add(filterItem6);
customFiltControlView.init(filterTabList, filterItemList);

示例二

CustomFiltControlView customFiltControlView = findViewById(R.id.customFiltControlView);
final List<FilterTab> filterTabList = new ArrayList<>();
FilterTab filterTab1 = new FilterTab(1, "标签1");
FilterTab filterTab2 = new FilterTab(2, "标签2");
FilterTab filterTab3 = new FilterTab(3, "标签3");
filterTabList.add(filterTab1);
filterTabList.add(filterTab2);
filterTabList.add(filterTab3);
List<FilterItem> filterItemList1 = new ArrayList<>();
FilterItem filterItem1 = new FilterItem(10, "选项1", 1);
FilterItem filterItem2 = new FilterItem(11, "选项2", 1);
FilterItem filterItem3 = new FilterItem(12, "选项3", 1);
filterItemList1.add(filterItem1);
filterItemList1.add(filterItem2);
filterItemList1.add(filterItem3);
List<FilterItem> filterItemList2 = new ArrayList<>();
FilterItem filterItem4 = new FilterItem(13, "选项4", 2);
FilterItem filterItem5 = new FilterItem(14, "选项5", 2);
filterItemList2.add(filterItem4);
filterItemList2.add(filterItem5);
List<FilterItem> filterItemList3 = new ArrayList<>();
FilterItem filterItem6 = new FilterItem(15, "选项6", 3);
filterItemList3.add(filterItem6);
List<List<FilterItem>> filterItemListList = new ArrayList<>();
filterItemListList.add(filterItemList1);
filterItemListList.add(filterItemList2);
filterItemListList.add(filterItemList3);
customFiltControlView.init(filterTabList, filterItemListList);

二、控件使用示例

2.1 示例一

在CustomFiltControlView的筛选条件发生改变时,可以通过事件回调获取筛选条件的具体内容:

customFiltControlView.setOnItemChildClickListener(new CustomFiltControlView.OnItemChildClickListener() {
    @Override
    public void onItemChildClick(View view, int tabIndex, int itemId, String itemTitle, boolean isChecked) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("tabIndex: " + tabIndex + "\n");
        stringBuilder.append("itemId: " + itemId + "\n");
        stringBuilder.append("itemTitle: " + itemTitle + "\n");
        stringBuilder.append("isChecked: " + isChecked);
        Toast.makeText(MainActivity.this, stringBuilder.toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTabClick(View view, int tabIndex, boolean isChecked) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("tabIndex: " + tabIndex + "\n");
        stringBuilder.append("isChecked: " + isChecked);
        Toast.makeText(MainActivity.this, stringBuilder.toString(), Toast.LENGTH_SHORT).show();
    }
});

2.2 示例二

在CustomFiltControlView的多选和确定按钮功能自定义时,可以通过事件回调获取筛选条件的具体内容:

customFiltControlView.setOnClickChangeListener(new CustomFiltControlView.OnClickChangeListener() {
    @Override
    public void confirmClick(View view, Map<Integer, List<Integer>> map) {
        StringBuilder stringBuilder = new StringBuilder();
        for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
            int tabIndex = entry.getKey();
            List<Integer> itemList = entry.getValue();
            String title = "";
            for (Integer itemId : itemList) {
                title += customFiltControlView.getItemTitle(tabIndex, itemId) + "、";
            }
            title = title.substring(0, title.length() - 1);
            stringBuilder.append(customFiltControlView.getTabText(tabIndex) + ": " + title + "\n");
        }
        Toast.makeText(MainActivity.this, stringBuilder.toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void cancelClick(View view) {
        Toast.makeText(MainActivity.this, "取消操作", Toast.LENGTH_SHORT).show();
    }
});

以上就是CustomFiltControl的完整攻略和两个示例的讲解,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android可筛选的弹窗控件CustomFiltControl - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 64位 win10系统安装绿色版mysql-5.7.16-winx64的教程

    下面是详细的攻略: 1. 下载MySQL-5.7.16-winx64绿色版安装包 首先,在MySQL官网中找到MySQL-5.7.16-winx64绿色版的下载链接,下载到本地。 2. 安装MySQL-5.7.16-winx64 接着,找到下载后的压缩包,解压到本地某一文件夹,比如 D:\mysql-5.7.16-winx64。 进入解压后的文件夹,双击运行…

    other 2023年6月27日
    00
  • html中的绝对路径URL和相对路径URL及子目录、父目录、根目录

    下面详细讲解一下HTML中的绝对路径URL和相对路径URL,以及子目录、父目录、根目录的用法。 绝对路径和相对路径 在HTML中,URL可以用绝对路径或相对路径来表示。绝对路径是从网站的根目录以外的位置开始的完整路径。相对路径是相对于当前文档的位置定义的路径。 在编写HTML文档时使用相对路径URL会更为灵活,因为它可以随意拷贝到其他文件夹或者其他服务器上使…

    other 2023年6月27日
    00
  • 苹果iOS10 Beta3开发者预览版固件下载地址汇总(附升级方法)

    苹果iOS10 Beta3开发者预览版固件下载及升级方法 苹果iOS10 Beta 3开发者预览版固件已经发布了,以下是固件下载地址及升级方法的详细攻略。 下载地址 在下载之前,请确保你已经注册了苹果开发者账号。 前往 https://developer.apple.com/download/ ,登录 Apple Developer Center。 选择 “…

    other 2023年6月26日
    00
  • Vue 3.0自定义指令的使用入门

    以下是Vue 3.0自定义指令的使用入门的完整攻略。 1. 什么是Vue自定义指令 Vue.js 的自定义指令是一种用于对特定 DOM 元素进行操作的指令。它们由v-前缀开头,用于表示这是 Vue 的内置指令。自定义指令可以用于添加DOM元素监听器、数据绑定、样式绑定等,可以以较低的代码成本来扩展Vue的功能性。 2. Vue 3.0自定义指令的使用方法 V…

    other 2023年6月25日
    00
  • 什么是操作系统?

    操作系统是指一组系统软件,它们管理计算机的硬件和软件资源,为用户和应用程序提供统一的接口和服务。操作系统的攻略可以分为以下几个方面: 学习操作系统的基础知识,包括操作系统的概念、功能和特点,以及常见的操作系统类型和体系结构。 掌握操作系统的设计和实现原理,包括进程管理、内存管理、文件系统、设备管理等子系统的设计和实现方法。 熟悉操作系统的开发环境和工具,包括…

    其他 2023年4月19日
    00
  • 总结易语言MD5加密16位和32位方法

    总结易语言MD5加密16位和32位方法攻略 简介 MD5(Message Digest Algorithm 5)是一种常用的哈希算法,用于将任意长度的数据转换为固定长度的哈希值。在易语言中,我们可以使用MD5算法对字符串进行加密,得到16位或32位的MD5值。 16位MD5加密方法 以下是使用易语言实现16位MD5加密的方法: // 导入MD5模块 impo…

    other 2023年7月28日
    00
  • redis客户端连接错误 NOAUTH Authentication required

    当我们连接 Redis 客户端时,有时会遇到一个错误信息:NOAUTH Authentication required,这意味着我们的 Redis 实例已启用了认证机制,并且连接到 Redis 实例需要提供密码。以下是详细的攻略: 1. 连接 Redis 实例 使用 Redis 客户端连接 Redis 实例时,需要通过 redis-cli 命令来连接,并指定…

    other 2023年6月25日
    00
  • Go语言的结构体还能这么用?看这篇就够了

    让我来给你详细讲解一下“Go语言的结构体还能这么用?看这篇就够了”的完整攻略。 1. 简介 Go语言的结构体是一种自定义数据类型,它可以包含各种不同类型的数据,如数字、字符串、布尔值等。除此之外,结构体还可以嵌套、匿名等等,使其更加灵活多变。在本篇攻略中,我们将探讨结构体的一些高级用法,让你更好地掌握它。 2. 结构体的嵌入 2.1 基本用法 结构体的嵌入是…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部