探索arkui(2)--- 布局(列表)--- 2(支持分组/实现响应滚动位置)

前端开发布局是指前端开发人员宣布他们开发的新网站或应用程序正式上线的活动。在前端开发布局中,开发人员通常会展示新网站或应用程序的设计、功能和用户体验,并向公众宣传新产品的特点和优势。前端开发布局通常是前端开发领域的重要事件,吸引了广泛的关注和关注。通过前端开发布局,开发人员可以推广他们的新产品,增加用户的关注和使用,并提高自己的品牌知名度。同时,前端开发布局也为用户提供了了解和体验新产品的机会,帮助他们更好地了解和使用新的网站或应用程序。鸿蒙开发亦是如此。

列表


官网描述 

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。

使用列表可以轻松高效地显示结构化、可滚动的信息。通过在List组件中按垂直或者水平方向线性排列子组件ListItemGroup或ListItem,为列表中的行或列提供单个视图,或使用ForEach迭代一组行或列,或混合任意数量的单个视图和ForEach结构,构建一个列表。List组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。

我的理解 

有点类似于只有一列的表格,超出屏幕自带滚动条

代码 

import util from '@ohos.util';

class Contact {
  key: string = util.generateRandomUUID(true);
  name: string;
  icon: Resource;

  constructor(name: string, icon: Resource) {
    this.name = name;
    this.icon = icon;
  }
}

const alphabets = ['#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
  'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

@Entry
@Component
struct ContactsList {
  @State selectedIndex: number = 0;

  @Builder itemHead(text: string) {
    // 列表分组的头部组件,对应联系人分组A、B等位置的组件
    Text(text)
      .fontSize(20)
      .backgroundColor('#fff1f3f5')
      .width('100%')
      .padding(5)
  }

  contactsGroups: object[] = [
    {
      title: 'A',
      contacts: [
        new Contact('艾佳', $r('app.media.app_icon')),
        new Contact('艾佳2', $r('app.media.app_icon')),
        new Contact('艾佳3', $r('app.media.app_icon')),
        new Contact('艾佳4', $r('app.media.app_icon')),
        new Contact('安安1', $r('app.media.app_icon')),
        new Contact('安安2', $r('app.media.app_icon')),
        new Contact('安安3', $r('app.media.app_icon')),
        new Contact('安安21', $r('app.media.app_icon')),
        new Contact('安安22', $r('app.media.app_icon')),
        new Contact('安安23', $r('app.media.app_icon')),
        new Contact('安安24', $r('app.media.app_icon')),
        new Contact('安安25', $r('app.media.app_icon')),
        new Contact('安安26', $r('app.media.app_icon')),
        new Contact('安安27', $r('app.media.app_icon')),
        new Contact('安安37', $r('app.media.app_icon')),
        new Contact('安安47', $r('app.media.app_icon')),
        new Contact('安安57', $r('app.media.app_icon')),
        new Contact('Angela', $r('app.media.app_icon')),
        new Contact('Angela2', $r('app.media.app_icon')),
        new Contact('Angela3', $r('app.media.app_icon')),
        new Contact('Angela4', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
        new Contact('Angela5', $r('app.media.app_icon')),
      ],
    },
    {
      title: 'B',
      contacts: [
        new Contact('白叶', $r('app.media.app_icon')),
        new Contact('伯明', $r('app.media.app_icon')),
        new Contact('伯明2', $r('app.media.app_icon')),
        new Contact('伯明3', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
        new Contact('伯明4', $r('app.media.app_icon')),
      ],
    },
  ]
  private listScroller: Scroller = new Scroller();

  build() {
    Stack({ alignContent: Alignment.End }) {
      List() {
        ForEach(this.contactsGroups, item => {
          ListItemGroup({ header: this.itemHead(item.title) }) {
            ForEach(item.contacts, contact => {
              ListItem() {
                Row() {
                  Image(contact.icon)
                    .width(40)
                    .height(40)
                    .margin(10)
                  Text(contact.name).fontSize(20)
                }
              }
            }, item => item.key)
          }
        })
      }.onScrollIndex((firstIndex: number) => {
        this.selectedIndex = firstIndex + 1
      }).divider({
        strokeWidth: 1,
        startMargin: 60,
        endMargin: 10,
        color: '#ffe9f0f0'
      }).scrollBar(BarState.Auto)
      .sticky(StickyStyle.Header)

      AlphabetIndexer({ arrayValue: alphabets, selected: 0 })
        .selected(this.selectedIndex)
    }
  }
}

效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/153976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode88 合并两个有序数组

合并两个有序数组 题解1 正向(记得插1删1)题解2 逆向 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减…

WEB 自动化神器 TestCafe(一)—安装和入门篇

今天小编给大家带来WEB 自动化神器 TestCafe(一) —安装和入门篇 一、TestCafe 介绍: TestCafe 是一款基于 Node.js 的端到端 Web 自动化测试框架,支持 TypeScript 或 JavaScript 来编写测试用例,运行用例,并生成自动化测试报告。…

传输层——— UDP协议

文章目录 一.传输层1.再谈端口号2.端口号范围划分3.认识知名端口号4.两个问题5.netstat与iostat6.pidof 二.UDP协议1.UDP协议格式2.UDP协议的特点3.面向数据报4.UDP的缓冲区5.UDP使用注意事项6.基于UDP的应用层协议 一.传输层 在学习HTTP等应用层协议时,为了便于理…

计算机网络的发展

目录 一、计算机网络发展的四个阶段 1、第一阶段:面向终端的计算机网络(20世纪50年代) 2、第二阶段:计算机—计算机网络(20世纪60年代) 3、第三阶段:开放式标准化网络(20世纪70年…

vue3别名配置(vite)

1、配置别名的优点: 在VUE项目中import导入文件时,可以写相对路径. 2、在vite.config.js中配置 a. 首先引入path import path from "path"/* */ b.在resolve添加别名,例如: alias:{"~":path.resolve(__di…

jQuery【jQuery树遍历、jQuery动画(一)、jQuery动画(二)】(四)-全面详解(学习总结---从入门到深化)

目录 jQuery树遍历 jQuery动画(一) jQuery动画(二) jQuery树遍历 1、 .children() 获得子元素&#xff0c;可以传递一个选择器参数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-…

批量处理文件夹及子文件夹下文件名

从此烟雨落京城&#xff0c;一人撑伞两人行。 问题描述 下载的资源被打过标记&#xff0c;不能直接使用&#xff0c;甚是痛苦 问题&#xff1a; 所有文件的文件名都加入了【更多it教程 微信号&#xff1a;…】字段&#xff0c;包括当前文件夹和子文件夹的全部文件&#xff0c…

leetcode:链表的中间结点

1.题目描述 题目链接&#xff1a;876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; 我们先看题目描述&#xff1a; 2.解题思路 我们用画图用快慢指针来解决这个问题 定义一个快指针fast&#xff0c;一个慢指针slow 快指针一次走两个结点&#xff0c;慢指针一次…

vscode终端npm install报错

报错如下&#xff1a; npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion1, but package-lock.json was generated for lockfileVersion2. Ill try to do my best with it! npm ERR! code EPERM npm ERR! syscall open npm ERR! errno -4048…

【AI视野·今日Sound 声学论文速览 第三十四期】Thu, 26 Oct 2023

AI视野今日CS.Sound 声学论文速览 Thu, 26 Oct 2023 Totally 9 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Dynamic Processing Neural Network Architecture For Hearing Loss Compensation Authors Szymon Drgas, Lars Bramsl w, Archontis Poli…

LeetCode(21)反转字符串中的单词【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 151. 反转字符串中的单词 1.题目 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单…

Java实现俄罗斯方块游戏

俄罗斯方块游戏本身的逻辑&#xff1a; 俄罗斯方块游戏的逻辑是比较简单的。它就类似于堆砌房子一样&#xff0c;各种各样的方地形状是不同的。但是&#xff0c;俄罗斯方块游戏的界面被等均的分为若干行和若干列&#xff0c;因此方块的本质就是占用了多少个单元。 首先来考虑…

单脉冲测角-和差比幅法

和差比幅法单脉冲测角 单脉冲测角的类型阵列接收模型和差波束构造方法和差比幅测角仿真 单脉冲测角的类型 传统的单脉冲测向方法主要有3种&#xff0c;分别是半阵法、加权法和和差比幅法。其实这3种方法都需要形成和波束和差波束&#xff0c;只是波束形成的方法不同&#xff0…

多标签页文件管理器 - Win系统

多标签页文件管理器 - Win系统 前言My Files-X Free360文件夹升级Win11 前言 Win10系统自带的文件管理器不支持多标签页功能&#xff0c;本文推荐几款多标签页文件管理器&#xff0c;可以在一个文件管理器窗口中打开多个标签页。 My Files-X Free 此文件管理器支持多标签页&…

【Qt之QWizard问题】setPixmap()设置logo、background、watermark无效不显示解决方案

问题原因&#xff1a; 使用QWizard或者QWizardPage设置像素图&#xff0c;结果设置完不显示效果。 设置示例&#xff1a; setPixmap(QWizard::WatermarkPixmap, QPixmap("xxx/xxx/xxx.png"));setPixmap(QWizard::BackgroundPixmap, QPixmap("xxx/xxx/xxx.png&…

redis未授权访问漏洞利用

当redis服务(6379)端口对外开放且未作密码认证时&#xff0c;任意用户可未授权访问redis服务并操作获取其数据。 攻击机&#xff1a;10.1.1.100 kali 目标靶机&#xff1a;10.1.1.200 一、探测redis的未授权访问 首先在攻击机上使用nmap对目标机进行扫描&#xff0c;探测开放的…

番外 2 : LoadRunner 的安装以及配置

LoadRunner 的安装以及配置教程 一 . 配置 IE 浏览器二 . 安装 LoadRunner 工具三 . 修改默认浏览器的配置四 . 设置 LoadRunner 能够获取本地资源 Hello , 大家好 , 又给大家带来新的专栏喽 ~ 这个专栏是专门为零基础小白从 0 到 1 了解软件测试基础理论设计的 , 虽然还不足以…

AW2013芯片讲解

文章目录 前言一、AW2013芯片介绍二、AW2013从机地址三、AW2013读写时序AW2013写时序AW2013读时序 四、AW2013的INT引脚五、LED作用和配置描述LED控制PWM控制模式简短编程模式 六、AW2013寄存器讲解总结 前言 本篇文章将带大家学习AW2013芯片的使用。 一、AW2013芯片介绍 AW…

CSS盒子模型

在网页设计的时候&#xff0c;每个元素都是一个矩形的块&#xff0c;类似于盒子的形状&#xff0c;所以就有了盒子模型的概念。 盒子模型中的主要参数&#xff1a; 内容、内边距&#xff08;上内边距、下内边距、左内边距、右内边距&#xff09;、边框&#xff08;上边框、下…

echart柱状图y坐标轴反转问题

先看下面视屏 REVEISEdEMO 很明显&#xff0c;随着窗口高度的变化(这里变高)&#xff0c;y方向坐标轴有个反转的过程 解决方法 给柱状图的配置项添加如下代码
最新文章