HarmonyOS ListContainer 实现列表
先看下实现的效果如下:
ListContainer 是用来实现列表的
学习ListContainer 这个属性看实现的源码是少不了的,
在里面看到setItemProvider 应该是用来记载item的
它里面是 BaseItemProvider 在跳进去看看
这个里面有获取item ,以及布局,刷新等,(不过我看的第一次看到getCount,getItem,getItemId,还以为是andriod的viewpage呢,开个玩笑,这里大致能想到,继承这个抽象类的时候,会生成四个方法,getComponent 是加载list的item布局的,getItem是用来获取item内容的,)
看到这,我们要想使用setItemProvider 就要创建一个类来继承这个抽象的BaseItemProvider
明白了大致的思路下面开始,
首先在主界面的xml中写一个ListContainer 具体如下:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_parent"ohos:width="match_parent"ohos:orientation="vertical"><ListContainerohos:id="$+id:list"ohos:height="match_parent"ohos:width="match_parent"/></DirectionalLayout>
我这里创建了一个 BaseProvider 来继承 BaseItemProvider
生成之后就是往里面添加内容了,具体的如下,
package com.example.myapplication.slice;import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.BaseItemProvider;
import ohos.agp.components.Component;
import ohos.agp.components.ComponentContainer;
import ohos.agp.components.LayoutScatter;import java.util.List;public class BaseProvider extends BaseItemProvider {// 定义一个listprivate List<String> list;// 定义一个上下文private AbilitySlice content;public BaseProvider(List<String> list,AbilitySlice content) {super();this.list = list;this.content = content;}@Overridepublic int getCount() {return list == null ? 0 : list.size();}@Overridepublic Object getItem(int i) {return list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic Component getComponent(int i, Component component, ComponentContainer componentContainer) {component = LayoutScatter.getInstance(content).parse(ResourceTable.Layout_item_sample, null, false);return component;}
}
这里插入的一个item的如下
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_content"ohos:width="match_parent"ohos:orientation="vertical"><Textohos:id="$+id:item"ohos:height="60fp"ohos:width="match_content"ohos:text="HarmonyOS"ohos:layout_alignment="center"ohos:text_size="20fp"/><Textohos:height="1fp"ohos:width="match_parent"ohos:background_element="#00d8a0"/>
</DirectionalLayout>
写好之后就去java里面去试试
下面先写100个数据看看
package com.example.myapplication.slice;import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.ListContainer;
import ohos.agp.window.dialog.ToastDialog;import java.util.ArrayList;
import java.util.List;public class MainAbilitySlice extends AbilitySlice {private ListContainer listContainer;@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_main_layout);listContainer = (ListContainer) findComponentById(ResourceTable.Id_list);List<String> list = new ArrayList<>();for (int i = 0; i < 100; i++) {list.add("");}BaseProvider baseProvider = new BaseProvider(list, this);listContainer.setItemProvider(baseProvider);listContainer.setItemClickedListener(new ListContainer.ItemClickedListener() {@Overridepublic void onItemClicked(ListContainer listContainer, Component component, int i, long l) {new ToastDialog(getContext()).setText("点击了第" + i + "个").show();}});}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}
}
今天写实现一个简单的list ,list里面的要学习的内容挺多的,后续在更新一些,添加item 和删除item
HarmonyOS ListContainer 实现列表相关推荐
- harmonyos鸿蒙,鸿蒙HarmonyOS应用权限列表大全
HarmonyOS的应用权限严格按照权限分类分级模型进行定义,如图1所示,具体过程可分为三步: 1.根据不同应用所需实现的功能,明确接口是否需要对外开放. 2.根据接口所涉数据的敏感程度或所涉能力的安 ...
- 鸿蒙的应用列表,图解鸿蒙列表组件ListContainer
一.什么是ListContainer ListContainer是用来呈现连续.多行数据的列表组件,包含一系列相同类型的列表项.如下图所示: 二.ListContainer的架构视图 ListCont ...
- ListContainer教程
主文档地址 https://blog.csdn.net/BLUESKYHOST/article/details/111411001 ListContainer 当前教程项目地址 https://git ...
- dcase_util教程(二)——各单元介绍
接着上一篇教程,继续的有各个UTILITIES的介绍.网址 1. Container 数据容器的类.这些数据的目的是为了包装数据,使用有用的方法来访问和操作数据,以及加载和存储数据. 这些容器是从标准 ...
- 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
from urllib import request from bs4 import BeautifulSoup #一个可以从html或者xml中提取结构化数据的python库 #构造头文件,模拟浏览 ...
- pages文件夹 AddCartSuccess Center Detail Home Login Pay PaySuccess
pages文件夹 AddCartSuccess <template><div class="cart-complete-wrap"><div clas ...
- Hi3861开发环境
Hi3861开发板介绍 本文档介绍Hi3861 WLAN模组的开发环境搭建.版本编译构建.烧录.源码修改.调试验证等方法.通过学习,开发者会对Hi3861 WLAN模组开发流程有初步认识,并可上手业务 ...
- HarmonyOS之常用组件ListContainer的功能和使用
一.ListContainer 简介 ListContainer 是用来呈现连续.多行数据的组件,包含一系列相同类型的列表项. 二.支持的 XML 属性 ListContainer 的共有 XML 属 ...
- HarmonyOS:ListContainer实现表格
目录 一.场景 二.实现效果 三.实现步骤 1.布局文件 2.适配器 3.主界面逻辑 一.场景 需要一个表格展示一下成绩信息. 二.实现效果 三.实现步骤 1.布局文件 <?xml vers ...
最新文章
- IAS的工作原理(一)作为 RADIUS 服务器的 IAS
- CCNA笔记-交换机安全
- IT顾问成长分享沙龙
- c语言编程学生管理,c语言编程,关于学生管理的程序(急急急)
- 第五次会议记录:开始进一步需求分析,及初步分工
- Matplotlib实例教程(九)热力图
- oracle record is locked by another user
- VF02 会计凭证过账时间
- [AtCoder Regular Contest 123] 题解
- 【Java】避免用户篡改查询结果的GUI显示的策略
- C语言笔记(数组地址一些细节)
- 程序设计与编译(C++入门)
- 网页顶部广告展开与收起
- 微信公众号网页开发逻辑梳理
- 综述摘要怎么写?(含7大容易被忽略的注意事项及80%综述文章常见句型汇总)...
- 用java编写人民币转化为美元_js实现数字转人民币、美元的大写汉字
- 聚观早报 | 通信行程卡正式宣布下线;《三体》首日播放量破1亿
- Web主机管理器(WHM)中如何安装SSL证书
- 基于c#条码打印软件源代码 可选择打印机,可选择标签
- 文秘专业计算机基础试卷,秘书题库:文秘类专业基础理论课试卷上2