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

布局王
• 阅读 3

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

鸿蒙仓颉语言开发实战教程:实现商品分类页 分类页面要在基本布局的基础上增加一些动态效果,比如点击状态的切换和两个列表容器的联动。下面为大家详细介绍。

分类列表

先来看左侧的分类列表,很明显是一个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语言##仓颉##购物#

点赞
收藏
评论区
推荐文章
布局王 布局王
7小时前
Uniapp开发鸿蒙购物应用教程之商品列表
今天要分享的依然是使用uniapp跨平台开发鸿蒙应用的系列教程,今天要做的是实现首页的商品列表,效果图如下:今天的内容分为两部分,一部分是中间的商品分类,还有下方商品列表,不过这两部分其实是相同的布局方式,都是网格布局。在鸿蒙原生开发中我们都使用过grid
布局王 布局王
7小时前
仓颉开发语言入门教程:搭建开发环境
仓颉开发语言作为华为为鸿蒙系统自研的开发语言,虽然才发布不久,但是它承担着极其重要的历史使命。作为鸿蒙开发者,掌握仓颉开发语言将成为不可或缺的技能,今天我们从零开始,为大家分享仓颉语言的开发教程,今天要分享的是搭建开发环境。仓颉在DevEcostudio和
布局王 布局王
7小时前
鸿蒙仓颉开发语言实战教程:实现商城应用首页
经过了几天的入门教程,我们终于进入到了仓颉开发语言的实战环节,今天分享的内容是实现商城应用的首页页面,效果图如下:首页的内容包括导航栏、轮播图、商品分类和商品列表,我们下面逐一介绍。导航栏仓颉语言中是没有导航栏组件的,我们需要自己去开发。此处的导航栏也比较
布局王 布局王
7小时前
鸿蒙仓颉开发语言实战教程:自定义tabbar
大家周末好呀,今天继续分享仓颉语言开发商城应用的实战教程,今天要做的是tabbar。大家都知道ArkTs有Tabs和TabContent容器,能够实现上图的样式,满足基本的使用需求。而仓颉就不同了,它虽然也有这两个组件,但是它的tabbar参数只支持传入图
布局王 布局王
7小时前
鸿蒙仓颉语言开发教程:网络请求和数据解析
现在我能理解华为方面不断的鼓励大家在网络上贡献自己的教程。没有教程,没有参考文献,仓颉购物应用的开发过程真是举步维艰,每一步都是摸着石头过河,不过希望通过幽蓝君的文章能让大家少走一些弯路。今天就以购物应用的分类列表为例,分享在仓颉开发语言中如何进行网络请求
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:设置页面
仓颉语言商城应用的页面开发教程接近尾声了,今天要分享的是设置页面:导航栏还是老样式,介绍过很多次了,今天不再赘述。这个页面的内容主要还是介绍List容器的使用。可以看出列表内容分为三组,所以我们要用到ListItemGroup,不过第一组是没有标题的,所以
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:消息列表
大家周末好,今天要分享的是仓颉语言开发商城应用实战教程的消息列表页面。这个页面的导航栏和之前有所不同,不过难度并没有增加,只是标题移到了左边,我们使用两端对齐方式就能实现,导航栏部分的具体代码如下:Row(8)Text('消息').fontSize(16)
鸿蒙小林 鸿蒙小林
7小时前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表(15)
技术栈Appgalleryconnect开发准备上一节我们实现了购物车商品列表的大部分功能,实现了商品的添加、删除、增减、价格计算等业务,并且都跟云端进行通信。现在我们继续对项目进行改造,这一节我们要改造的内容是分类页,这个页面我们在之前的非端云一体化项目
鸿蒙小林 鸿蒙小林
48分钟前
《仿盒马》app开发技术分享-- 分类左侧列表(17)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的顶部导航栏全选弹窗列表,并实现了跟顶部列表的点击选中联动效果,这一节我们要实现的功能是,分类模块的左侧列表,它同样也需要跟弹窗列表的点击,顶部列表的点击有联动的效果功能分析1.列表展
鸿蒙小林 鸿蒙小林
48分钟前
《仿盒马》app开发技术分享-- 分类右侧商品列表(18)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页左侧二级分类列表功能,并实现了顶部列表&弹窗跟左侧列表的联动,这一节我们需要在它们联动的基础上继续添加右侧列表的联动效果功能分析1.列表展示当我们选择顶部一级分类列表时,左侧列表展示二级