微信小程序类ExpandableListView分组实现

微信小程序 仿QQ用户列表 微信小程序仿QQ用户列表 阅读详情

效果图

小程序分组实现。

实现

代码结构如下图图:

文件目录说明如下:

│  app.js		
│  app.json
│  app.wxss
│  project.config.json
│  
├─constants
│      restApi.js		//存放api
│      
├─images			//图片
│      arrow-down.png
│      arrow-right.png
│      arrow-up.png
│      
├─pages
│  ├─ExpandableListView		//选择图书馆页面
│  │      ExpandableListView.js
│  │      ExpandableListView.json
│  │      ExpandableListView.wxml
│  │      ExpandableListView.wxss
│  │      
│  └─index				//首页
│          index.js
│          index.json
│          index.wxml
│          index.wxss
│          
└─utils
        http-rest.js			//Restful接口封装
        util.js				//一些简单的工具集

核心代码

ExpandableListView.xml

<!--pages/ExpandableListView/ExpandableListView.wxml-->
<view class='container'>

    <form bindsubmit="formSubmit">
        <view class='search'>
            <input class='search_input' name='search_data' placeholder="请输入图书馆名称"></input>
            <view class='search_btn_wrap'>
                <button formType="submit" class='search_btn'> </button>
            </view>
        </view>
    </form>


    <view class='result-box' hidden='{{search_data ? false: true}}'>
        <block wx:for="{{search_data}}" wx:for-index="idxsearch" wx:for-item="search">
            <text catchtap='selectLib' class='library-item' data-idxlib='{{idxsearch}}'>{{search.orgName}}</text>
        </block>
    </view>


    <block wx:for="{{provinces}}" wx:for-index="idx" wx:for-item="item">

        <view class='province'>

            <view class='province-sub' catchtap="showChilds" data-param="{{idx}}">
                <text class='province-sub-name' catchtap='showChilds' data-param="{{idx}}">{{item.areaName}}</text>
                <image class='province-sub-img' data-param="{{idx}}" src='{{isShowFrom == idx ? "/images/arrow-up.png" : "/images/arrow-down.png"}}' catchtap='showChilds'></image>
            </view>

            <view class="{{isShowFrom == idx ? '' : 'tui-hide'}}">
                <view class='library-box'>
                    <block wx:for="{{librarys}}" wx:for-index="idxlib" wx:for-item="lib">
                        <text catchtap='selectLib' class='library-item' data-idxlib='{{idxlib}}'>{{lib.orgName}}</text>
                    </block>
                </view>
            </view>
        </view>
    </block>

</view>

ExpandableListView.wxss

/* pages/ExpandableListView/ExpandableListView.wxss */

.province {
    margin: 0rpx 10rpx;
    overflow: hidden;
    width: 100%;
}

.tui-hide {
    display: none;
}

.province-sub {
    width: 100%;
    height: 91rpx;
    background-color: #eee;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1rpx solid #fff;
}

.province-sub-name {
    margin-left: 34rpx;
    font-size: 30rpx;
    color: #282828;
}

.province-sub-img {
    width: 26rpx;
    height: 15rpx;
    margin-right: 34rpx;
}

.library-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    background-color: #fff;
}

.library-item {
    height: 90rpx;
    width: 100%;
    line-height: 90rpx;
    padding-left: 97rpx;
    font-size: 30rpx;
    color: #656565;
    border-bottom: 1rpx solid #eee;
    text-overflow: -o-ellipsis-lastline;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
}

.container {
    display: flex;
    flex-direction: column;
    width: 100%;
    align-items: center;
}

.search {
    width: 690rpx;
    height: 88rpx;
    border: 3rpx solid #11d5ef;
    border-radius: 40rpx;
    background-color: #fff;
    margin-top: 24rpx;
    margin-bottom: 20rpx;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
}

.search_btn {
    width: 100%;
    height: 100%;
    border: none;
    opacity: 0;
}

.result-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    background-color: #fff;
}
.search_btn_wrap {
    margin-right: 30rpx;
    margin-left: 6rpx;
    width: 53rpx;
    height: 50rpx;
    background-size: contain;
    background-repeat: no-repeat;
    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAAyCAYAAAD845PIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU3NTAyRUJDNzlENjExRThBRTg4OENBMTc0ODEwN0VFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU3NTAyRUJENzlENjExRThBRTg4OENBMTc0ODEwN0VFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTc1MDJFQkE3OUQ2MTFFOEFFODg4Q0ExNzQ4MTA3RUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTc1MDJFQkI3OUQ2MTFFOEFFODg4Q0ExNzQ4MTA3RUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6mxhOYAAAD8ElEQVR42tSZz0tUURTH3wxiBjUqtisNMjPLhRBmEVhqKQppy9lGkJLRj0XrXIdQWZoF1T/QwhKs1BEMUjQUF1kptSjdBJblBOls7Bz83jxcZkbf3DvznANf5t03753zPu/+Ps8XDAadBCyXVE06RTpEKibtIGWTfpP+kGZIH0jDpBBp0UmRZbi8vo7UQqonbYtxTTa0G+CXSSukV6QHpH7SajKh/Ju87jhpHA92Lg5QLOPrm3D/GPx5BpVF6iS9JZVr/zFkG6mBVEjKIfnwW4jzbbhOWjn8dcK/dfPF6VP5pBekMnFumfSY1EGadRHnAOkK6YIGMkVqJM2loqZK8DYlUC/pIPrIrMs4s7ivGH6UlSFOSbKh9qAz56McweDAb/SrYbxv8NMMv6pF9CNuUqCy8CZVgDD6xkPLzf4R/IbFi+y11cd0qHbR5CIY6UJJGqRC8B8RTbHdNtQx0iVRvkoaSvI8OYQ4yi7ZGO4VlA8jmg/lHlJ3ihYA3Rhl1XPctgVVK+ahZe3tpcJ4uP+L4wrSGRtQLeLcE4xSqTQeVZ9qzdAIKhcjkbK7jjfWIY4b8FwJQ9WQMlF+l8DEastmsC508Dw1JlCVovza8dYGxHGlCVSpKI96DCXjl5pA7Rfljx5DyfiFJlDZovzDY6gFcZxjAhUQ5SWPocLiOGACtWTDkSXbaeMF+5EoUZbnMdQucfzLBOqztjn00mT8LyZQ77WVupcmV+jTJlBvRLnWYyi5kB02gQqJjRqvkIs8AipCfLVBDZlAcea0T5y75hGUjNvnGGR0/WKjpuw8qSDFQAWIq6zLxn6qHyt0tu0ebD/uIS7buLawTRhqFbtdlePmhEhzioA4TqOtWtITL6OaQ960VScZqFrbHLLJjJYxFNsNZy0VrDZqPSabtQ2sCv4zo6wqBkzAdChOfpwlzYu1GI9EFy0Dsb+X2lrPGli0tPM8JuE5UWOcoX1O2mthlOuBP/U56Lu2OjcG88fZrJ0QTdFBZ/5Eup/ABF2E+zgP0STOT2HCrYqxgE0ILN73qTmsxbrEqMi57lYkZzhJctNZ+6q4T2xbAijX4/8xXN/qrOfKV+GX/XN6bIJ02haYb5PffDn4HdJRC/2J56HrpJEo/x0hDcbY9S5gbThlUlN6QqQCfY371opLkAjuq4OfkRjXqRpbNKkxtx+yB6BcDPUnSYed9a/zAXT6MPrPtOP+6/wEakTFiQYWt8YyEmxC/IDPoGSYEZjf2bqmwFw3xa0MtRmwwWhgWx1qI7C8aGDpAOUaLF2gXIGlE9RG89h/sHSDYpvcAOxWOkLFA+PzwXSFigY2iT73M52hJFhIAfHJfwIMAErU4uDIwrA4AAAAAElFTkSuQmCC');
}

.search_input {
    margin-left: 30rpx;
    width: 100%;
	font-size: 30rpx;
}

由于篇幅原因就不赘述了,源码: https://download.youkuaiyun.com/download/she_lock/10560024 下载导入即可运行。

农业病虫害防治系统:SpringBoot+Vue+Android全栈开发实践 农业信息化系统开发是当前企业级应用的重要方向,其核心技术涉及前后端分离架构与移动端适配。通过SpringBoot构建的RESTful API可确保后端服务的高效稳定,结合Vue.js的数据可视化能力与Android原生开发的性能优势,形成完整的全栈解决方案。这类系统在农业领域具有显著价值,能有效解决传统病虫害防治知识传播效率低下的痛点。典型应用场景包括智能诊断模块开发,其中HanLP分词与TF-IDF算法优化是关键热词技术。项目实践中,采用Redis缓存与MinIO对象存储可显著提升系统性能,而RESTfu 阅读详情

相关推荐

wxWidgets:wxListView控件的使用指南

DeleteSelectedRow()函数用于删除选中的行,它使用GetNextItem()方法来获取选中行的索引,并使用DeleteItem()方法删除行。GetSelectedRowText()函数用于获取选中行的文本,它也使用GetNextItem()方法来获取选中行的索引,并使用GetItemText()方法获取行的文本。SetRowText()函数用于设置行的文本,它使用SetItemText()方法来修改行的文本。本文将详细介绍wxListView的使用方法,并提供相应的源代码示例。

ByteJolt的博客 506

微信小程序 view组件的基本使用

到这里view基础使用就教学完毕了,有人会说和效果图不一样,其实学到这里就差不多了,后面在给他加入样式就可以改成效果图一样的了。我们会看到页面上出现了三个纵向的ABC,为了方便观看,我们给他三个一个大小,宽高100像素。通过布局改变发现他从纵向修改到横向布局了,这时候在给他加一个元素即可横向平均布局了。为什么会纵向排列而不是横向排列,那是因为view是块元素,能占满整一行。能看图就尽量减少文字提示,从图书可以看出ABC是纵向排列的。这时候 就能看到三个快元素,我们给父级元素改变他的布局形式。

贼厉害 7172

微信小程序-微信小程序里的listview,内置了上拉刷新下拉加载更多的功能

wxListview 微信小程序里的listview,内置了上拉刷新下拉加载更多的功能,以及页面状态显示 适用于页面内有一个可上拉刷新下拉加载的list的情况 使用 1.拷贝lib文件夹到根目录 2.拷贝utils中的lvUtil和netUtil到你的utils文件夹 3.根据你的网络请求的字段特点修改netUtil和app.js中的相应字段. 4.页面的js引入: var lvUtil=require("../../utils/lvUtil.js"); 只需要在页面的onLoad方法中调用方法:lvUtil.initLv. 其他下拉刷新,上拉加载更多的方法都无需书写,在此方法内部已经实现. lvUtil.initLv(that,"lesson/search/v1.json", function(params){ params.type = 2; params.sourceType = 0; params.labelId = 0; params.priceType = 2;

微信小程序:ListView的实现及item的添加和删除

微信小程序:ListView的实现及item的添加和删除 效果图 具体实现 首先在pages文件夹下面添加my-list页面及其相应文件: 打开app.json,注册my-list界面,并将其放到第一位(打开小程序时显示的页面) 完成item的ui设计,按照喜好设计,这里只贴了my-list.wxml的代码(仅有两个text和一个image): 在my-list.js的data里添加...

kang0226的博客 6858

【Web实战】微信小程序逆向

2E 70 6E 67”为带存放路径的文件名称,“00 00 11 7C”对应文件在小程序包中的具体偏移位置,“00 01 01 F7“对应文件在小程序包中的数据长度。但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.html”文件中,“wxss”则在处理之后以“html”文件的形式存留在对应页面目录之下。

若有战,召必回 1946

VS Code+ESP-IDF开发避坑指南:头文件标红报错的5种解决方法(附CMakeLists.txt配置)

本文详细解析了在VS Code中使用ESP-IDF开发ESP32时头文件标红报错的5种解决方法,包括环境配置检查、CMakeLists.txt规范配置、路径解析策略、缓存清理技巧和高级调试手段。特别提供了CMakeLists.txt的实战配置示例,帮助开发者彻底解决头文件路径问题,提升开发效率。

weixin_33670786的博客 560

创新源于模仿之四:增强的ExpandableListView

分类: Android2011-04-10 16:24 2425人阅读 评论(7) 收藏 举报 继续讨论一下如何实现手机QQ里那个增强版的ExpandableListView效果,如下图:     Android缺省的ExpandableListView的group header无法固定在界面上,当向下滚动后,不能对当前显示的那些child 指示出它们归属于哪个group,而这一点

菜鸟的网摘 994

Latex在VSCODE中编译报错`Recipe terminated with error. Retry building the project.

Latex在VSCODE中编译报错Recipe terminated with error. Retry building the project. 1 报错提示: Recipe terminated with error 2 报错原因 大概率的原因是因为latex没有添加到系统环境变量中,所有设置的编译工具没有办法找到才出现的这种情况 3 解决方案 请按照如下方式进行系统变量的添加 对windows,win+R 然后输入sysdm.cpl 在高级中选择环境变量 找到path环境变量,将txtlive中

呆呆象呆呆的博客 3万+

android两级分类列表且子列表item不同布局实现

i++) {

wang688699的博客 782

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 377

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3094

小程序-ListView 模板引用

item布局文件( 引用 模板)cataTemp/index.wxml<template name="carTemp"> <view class="adapter_item"> <image src="http://kks.me/HkrL" class="item_img"></image> <view class="item_content"> <text

5591

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1069

微信小程序 - ListView3 - 分页加载

demo 地址: https://github.com/iotjin/Jh_weapp 效果图: js 代码: var index = 0; Page({ /** * 页面的初始数据 */ data: { dataArr: [] }, requestData: function (isLoadMore) { if (isLoadMore){...

iotjin的专栏 799

HTML满屏跳动的爱心(完整代码)

HTML语言实现满屏跳动爱心的完整代码。

AIGC 12万+

uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释

uniapp实现文本的展开与收起功能,uniapp展开全部和收起,uniapp里文本的展开与收起,uniapp中文本内容超出规定行数后展开收起的处理,UNIAPP兼容h5、微信小程序多行文本展开或收起,uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文),uni-app中文本过长-实现折叠与展开效果,中文本内容超出规定行数(字数)后展开收起的处理,超出部分...显示,uniapp适用于uniapp多行文本溢出显示...,多行文本展开或收起,uni-app-文本展开/收起折叠功能,支

🏆 前端领域优质创作者 5641

微信小程序 如何实现列表

微信小程序中实现列表可以通过使用「scroll-view」组件或「list」组件来实现。 使用「scroll-view」组件:可以使用 wx:for 指令来循环渲染列表中的数据,并为每个元素设置相应的样式。 使用「list」组件:该组件已经内置了列表的常用功能,包括列表渲染、上拉加载、下拉刷新等,开发者可以直接使用该组件来实现列表功能。 例如: <scroll-view class=...

weixin_42609225的博客 4612

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

微信小程序中view和scroll-view的用法

功能:通过view和scroll-view实现,竖向滚动。 1.在list.wxml中 2.在list.wxss中 显示效果: 如果要显示横向滚动,必须要设置为scroll-x 必须要在list.wxss中写宽度。 如果要显示竖向滚动,必须设置为scroll-y必须要遭list.wxss中写高度。 ...

zhao123456asd的博客 627

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

微信界面显示listview、Gridview

首先是权限 然后布局 &amp;amp;amp;lt;android.support.v4.view.ViewPager android:id=&amp;amp;quot;@+id/pager&amp;amp;quot; android:layout_width=&amp;amp;quot;match_parent&amp;amp;quot; android:layout_height=&amp;amp;quot;0dp&

qq_43677558的博客 584

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

微信小程序-通用设置item栏小封装

大家好,刚开始玩微信小程序,做了点小demo,记录自己的学习历程,同时分享给大家希望带给大家一点方便。 扫一扫,看是不是你想要的效果 wxml部分 <view class='list-view'> <view class='list-bord' > <block wx:for="{{infos}}" wx:key="index"> <view class='list-item' bindtap="itemClick" data-index="

u013306050的博客 1307

微信小程序使用自己的布局

我第一天学习微信小程序,照着黑马程序员老师的操作模仿编辑。因为视频是23年的,我24年4月份学习发现很多地方不一样了。

weixin_74385534的博客 675

【微信小程序】组件篇 -- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)

大家好,又见面了,我是夜阑的狗🐶,本文是专栏【微信小程序开发教程】专栏的第6篇文章;今天开始学习微信小程序的第三天💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。此专栏是我是夜阑的狗微信小程序开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。🌹 🌹 🌹也欢迎你,关注我。👍 👍 👍!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉。

JMFive的博客 7533

【微信小程序 五】ListView上拉加载

前端 listview.jsvar page = 0; var GetList = function (that) { that.setData({ hidden: false }); wx.request({ url: 'https://IP/wechat/index.php', data: { type: 'searchcate',

许博文的专栏 6658

【微信小程序】view 组件详解

在微信小程序中, 组件是一个容器组件,常用于承载其他内容。它类似于 HTML 中的 标签,用于布局和展示其他子组件。 组件可以包含文本、图片、按钮、输入框等其他组件,也可以用于嵌套其它 组件,从而实现更复杂的布局结构。 组件的主要作用是作为一个容器来实现页面的布局。它可以包含其他组件,并通过设置样式(如宽高、边距、对齐方式等)来控制这些子组件的展示方式。由于 组件非常常见,几乎在所有的微信小程序页面中都会用到它。在微信小程序中, 组件的使用非常简单,基本的语法如下: 这种结构将 组件包裹起来的内容呈

lph159的博客 2566

微信小程序列表渲染 - 04

微信小程序数据绑定

qq_25906119的博客 297

[插件/工具]微信小程序实用组件:带字母滑动的listview

http://www.wxapp-union.com/thread-2159-1-1.html 不懂如何导入demo的新手,请查看此链接;还是不懂,请加群536592077 这是一个带字母可滑动的列表小程序。 电脑上的截屏 如何使用 复制page下的文件夹到自己项目中 配置app.json 编译 功能 带

llixiangjian的博客 2203
上一篇: 微信小程序如何点击返回时传递数据给上一个页面之getCurrentPages
下一篇: 微信小程序实现类ExpendText可折叠文本
She_lock
博客等级 码龄12年 157粉丝 134原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值