Android可筛选的弹窗控件CustomFiltControl

yizhihongxing

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日

相关文章

  • 前端的框架TDesign小程序组件库体验

    下面我们就来详细讲解“前端的框架TDesign小程序组件库体验”的完整攻略。 一、TDesign小程序组件库 1.1 什么是TDesign小程序组件库? TDesign小程序组件库是运用Taro框架和React开发的一套适用于微信小程序、支付宝小程序和百度小程序的组件库,旨在帮助开发者更快速地开发小程序,并且让小程序在UI上有更好的体验。 1.2 TDesi…

    other 2023年6月26日
    00
  • 苹果iOS9.3.5正式版固件下载 苹果iOS9.3.5正式版固件下载地址大全

    苹果iOS9.3.5正式版固件下载攻略 苹果iOS9.3.5正式版固件是苹果公司发布的操作系统固件版本,本攻略将详细介绍如何下载该固件以及提供下载地址大全。请按照以下步骤进行操作: 步骤一:了解iOS9.3.5固件 首先,我们需要了解iOS9.3.5固件的一些基本信息。iOS9.3.5是苹果公司于2016年8月发布的一款操作系统固件,它包含了一些安全性和稳定…

    other 2023年8月5日
    00
  • C++ list的实例详解

    C++ list的实例详解 什么是C++ list? 在C++ STL中,list是一种双向链表容器,可以用于存储各种数据类型的元素。list在插入和删除操作上效率比较高,但是随机访问效率较低。 如何使用C++ list 引入list头文件 “`c++ include “` 声明list c++list<int> mylist; 在list中…

    other 2023年6月27日
    00
  • JavaScript变量作用域_动力节点Java学院整理

    当涉及到JavaScript中的变量作用域时,以下是一个完整的攻略,其中包含两个示例说明。 … … 作用域 作用域是指变量在代码中可访问的范围。在JavaScript中,有三种作用域:全局作用域、函数作用域和块级作用域。 1. … 作用域 全局作用域是在整个代码中都可访问的作用域。在全局作用域中声明的变量可以在代码的任何地方访问。 以下是一个示例…

    other 2023年8月10日
    00
  • table单元格边框合并

    table单元格边框合并 在HTML中,table元素是用于创建表格的最基本标签,而每一个表格都由行和列组成。为使表格更美观、易读,我们通常需要合并单元格的边框。 合并单元格边框 合并行边框 为了合并单元格的边框,我们可以设置单元格边框的属性border-collapse。具体实现方法如下: <style> table { border-coll…

    其他 2023年3月29日
    00
  • PostgreSQL 字符串处理与日期处理操作

    PostgreSQL 字符串处理与日期处理操作攻略 字符串处理操作 1. 字符串连接 要将两个字符串连接在一起,可以使用||操作符或concat()函数。 示例: — 使用 || 操作符 SELECT ‘Hello’ || ‘World’; — 输出:HelloWorld — 使用 concat() 函数 SELECT concat(‘Hello’, …

    other 2023年8月19日
    00
  • 内核线程优先级设置的方法介绍

    内核线程优先级设置的方法介绍 什么是内核线程优先级? 内核线程是在内核空间运行的线程,与用户空间的线程相比,内核线程更具有高优先级和更多的系统权限。内核线程优先级决定了内核线程在竞争系统资源时的调度顺序。 如何设置内核线程优先级? 在Linux系统中,可以使用nice命令来设置内核线程的优先级。nice命令可以为进程或线程调整优先级,较低的nice值代表较高…

    other 2023年6月28日
    00
  • Python类成员继承重写的实现

    Python类的继承和重写是面向对象编程的重要概念,实现类成员继承和重写可以提高代码的可复用性和可维护性,下面提供一份完整的攻略。 1. Python类的继承 在 Python 中,我们通过继承来实现类的复用,如果一个类需要复用另一个类中的属性和方法,可以通过继承的方式来实现。 在定义一个子类时,需要在类名的后面加上父类名,如下所示: class Paren…

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