鸿蒙仓颉语言开发实战教程:实现商品分类页

今天继续为大家带来仓颉语言开发商城应用的实战教程,今天的内容是实现商品分类页。

分类页面要在基本布局的基础上增加一些动态效果,比如点击状态的切换和两个列表容器的联动。下面为大家详细介绍。

分类列表

先来看左侧的分类列表,很明显是一个List容器,样式上比较简单,只有一个文本,不过它有个点击状态的切换效果。

在添加组件之前,我们需要先请求到分类的数据,关于仓颉语言的网络请求上一篇文章已经分享过,下面再贴一下分类列表的网络请求具体代码,要注意的是,嵌套数据的修改需要使用ObservedArrayList修饰才能在页面上实时变化:

@State var classList:ObservedArrayList<ClassItem> = ObservedArrayList<ClassItem>()
let url = CJTools.url + "/api/class.php"
let httpRequest = createHttp()
 let option = HttpRequestOptions(
    method: RequestMethod.GET,
    expectDataType: HttpDataType.STRING,
    header: HashMap<String, String>([("content-type", "application/json")])
)
this.loading = true
httpRequest.request(url, {err, resp =>
    if (let Some(e) <- err) {
         CJTools.log('error:' + e.message)
    }
    if (let Some(r) <- resp) {
            let str = r.result.toString()
            let jValue = JsonValue.fromStr(str)
            let jArray = jValue.asArray()
            for (i in 0..jArray.size()) {
                var model = DataModel.fromJson(jArray.get(i).getOrThrow().asObject())
                var modelData = match (model) {
                case data: DataModelStruct => data
                    case _ => throw Exception("this data is not DataModelStruct")
                 }
                let item = ClassItem(String.deserialize(modelData.get('id')), String.deserialize(modelData.get('classname')), String.deserialize(modelData.get('cover')))
                this.classList.append(item)
            }
        }
        this.loading = false
        httpRequest.destroy()
    },options:option)

请求之后最终classList是我们需要的数据,然后在List组件中遍历classList添加组件,仓颉中的循环遍历和ArkTs大不相同:

List{
    ForEach(
    this.classList,
    itemGeneratorFunc: {
        item: ClassItem, index: Int64 => ListItem {
                if(this.classIndex == index){
                    Row(){
                    Text(item.getClassname())
                    .fontSize(15)
                    .fontColor(0x4a4a4a)
            }
                .width(100.percent)
                .height(60)
                .backgroundColor(Color.WHITE)
                .alignItems(VerticalAlign.Center)
                .justifyContent(FlexAlign.Center)
                }else {
                    Row(){
                    Text(item.getClassname())
                    .fontSize(15)
                    .fontColor(Color.WHITE)
            }
                .width(100.percent)
                .height(60)
                .backgroundColor(Color.GRAY)
                .alignItems(VerticalAlign.Center)
                .justifyContent(FlexAlign.Center)
                }
        }
      }
    )
}
.width(30.percent).height(100.percent)

商品列表

商品列表需要通过选择分类来获取数据,请求方式和上面的网络请求类似,这里只说一下页面布局,使用Grid容器就能轻松实现商品列表,注意如何设置网格的列数和间距:

Grid{
     ForEach(
    goodsList,
    itemGeneratorFunc: {
        item: GoodsItem, index: Int64 => GridItem {
            Column() {
                        Image( item.getCover()).width(100.percent).height(120).margin(bottom: 4)
                        Text(item.getName())
                            .fontSize(14)
                            .textAlign(TextAlign.Start)
                            .fontWeight(FontWeight.W400)
                    }.alignItems(HorizontalAlign.Start).onClick({evet => })
        }
      }
    )
}
.width(70.percent).columnsTemplate('1fr 1fr')
        .columnsGap(5)
        .rowsGap(5)
        .backgroundColor(0xFFFFFF)
        .padding(right: 5, left: 5)

以上就是商品分类页面的内容介绍。#HarmonyOS语言##仓颉##购物#

原创作者: youlanjihua 转载于: https://www.cnblogs.com/youlanjihua/p/18905310
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 在汽车工程领域,主动悬架系统是提升车辆行驶性能和舒适性的关键技术之一,它能够根据不同的路面条件实时调整悬挂的刚度和阻尼。MATLAB和Simulink作为强大的仿真工具,在汽车控制系统的设计和分析中被广泛应用。MATLAB是由MathWorks公司开发的多范式编程环境,主要用于数值计算、符号计算、数据可视化和图像处理。在汽车控制系统的开发中,MATLAB可用于算法设计和验证,并提供丰富的数学函数库及优化工具。Simulink是MATLAB的一个扩展工具,专门用于动态系统的建模和仿真,其图形化用户界面允许用户通过拖拽和连接模块来构建模型,特别适合复杂的非线性系统,如汽车主动悬架系统。在Simulink中,可以建立车辆模型、悬挂模型、传感器模型和控制器模型,并进行时域或频域仿真以观察系统性能。 本项目提供的“汽车主动悬架控制器建模仿真程序代码”是一个典型的实现案例,其关键部分可能包括:1. 车辆模型,涵盖车辆的机械结构,如车轮、车身和悬挂系统,考虑车辆质量分配、几何参数及轮胎与路面的相互作用;2. 悬挂模型,主动悬挂由弹簧、阻尼器和执行器组成,执行器根据控制器指令改变悬挂特性,模型会考虑这些组件的物理特性并引入非线性效应;3. 传感器模型,如加速度计、位移传感器等,用于感知路面条件和车辆状态,为控制器提供反馈信息;4. 控制器设计,目标是根据传感器输入优化车辆行驶性能,可能采用PID控制、LQR控制或滑模控制等策略,控制器模型可在Simulink中以离散或连续形式实现;5. 仿真设置,定义仿真时间步长、初始条件和边界条件,以及输入路面扰动的随机序列,以模拟真实驾驶场景;6. 性能指标,通过仿真输出数据(如车身振动幅度、轮胎接地载荷、乘客舒适度指标等)来评估控制器性能,从而优化控制器参数以达
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在Android系统中,SU(Super User)二进制文件是获取root权限的关键组件,它允许用户以最高权限运行应用或命令,这对于系统调试、自定义ROM以及安装特定应用等操作至关重要。然而,随着时间推移,SU二进制文件可能会出现安全漏洞或与新版本Android系统不兼容的情况。因此,及时更新或修复过旧的SU二进制文件对于保障设备的安全性和功能完整性非常重要。 SU是“Super User”的缩写,用于在Linux或类Unix系统中切换用户权限。在Android设备被root后,SU二进制文件允许用户以root权限运行应用或命令,这对于系统调试、自定义ROM和安装特定应用等操作是必要的。 随着时间推移,SU二进制文件可能会出现安全漏洞,从而增加设备被恶意软件攻击的风险。此外,新版本的SU通常会增加对新Android版本的支持,因此保持SU二进制文件的最新状态对于确保兼容性至关重要。 要确定SU二进制文件是否过旧,可以通过在终端输入su -v命令来查看当前SU的版本信息。如果版本较旧,或者与当前Android版本不匹配,就需要考虑更新。 通过Magisk:Magisk是一款流行的root管理工具,它提供了安全且无缝的SU更新方式。只需安装Magisk Manager应用,然后在应用中检查更新,Magisk会自动处理SU二进制文件的升级。 通过SuperSU:SuperSU是另一个知名的root解决方案。可以访问其官方网站下载最新版本,然后按照提供的指南进行手动更新。 通过TWRP恢复:如果设备已安装Team Win Recovery Project (TWRP)恢复模式,可以下载新的SU ZIP文件,在恢复模式下刷入来更新。 更新SU二进制文件时,务必确保从可信赖的源获取更新,避免下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值