#放码来战.端云一体化开发#HarmonyOS 5 【农民叔叔】14.【端侧工程】首页病虫害自定义列表项组件PestListView,避免冗余代码

核心知识点

1.自定义PestListView组件

2.定义病虫害实体类PestModel对象

在HomePage.ets文件中定义一个组件PestListView,该组件必需的3个属性:病虫害图片、农作物名称、病虫害名称。以及接收外部输入参数病虫害实体PestModel。

/**
 * 病虫害列表项
 */
@Component
struct PestListView{
  private lstItem?:PestModel;
  private lstItemImg?:string |Resource;
  private lstItemTitle?:string |Resource;
  private lstItemId?:number;
  private lstItemPest?:string |Resource;

  aboutToAppear(): void {
    this.lstItemId=this.lstItem?.ID;
    this.lstItemImg=this.lstItem?.Img;
    this.lstItemTitle=this.lstItem?.Type;
    this.lstItemPest=this.lstItem?.PestName;
  }

  build() {
    Stack({alignContent:Alignment.TopStart}){
      // 背景图
      Image(this.lstItemImg)
        .objectFit(ImageFit.Cover)
        .aspectRatio(1.32)
        .syncLoad(true)
        .borderRadius(12)
      Column(){
        // 农作物品名
        Text(this.lstItemTitle)
          .fontSize(16)
          .fontWeight(FontWeight.Medium)
          .alignSelf(ItemAlign.Start)
          .fontColor($r('sys.color.ohos_id_color_text_primary'))
        // 病虫害名称
        Text(this.lstItemPest)
          .fontSize(12)
          .fontColor($r('sys.color.ohos_id_color_text_secondary'))
          .margin({top:4})
      }
      .margin({left:8,top:8})
      .backgroundColor($r('sys.color.ohos_id_color_card_bg'))
      .borderRadius(8)
      .padding(4)
    }
  }
}

定义病虫害实体类PestModel:

ets>>models>>新建ArkTS文件,命名为PestModel。

/**
 * 病害实体对象
 */
export default class PestModel {
  /**
   * 病害ID
   */
  ID?:number;

  /**
   * 农作物品名
   */
  Type?:string | Resource;

  /**
   * 病害图片
   */
  Img?:Resource | string;

  /**
   * 病害名称
   */
  PestName?:string | Resource;

  /**
   * 病害描述
   */
  PestDesc?:string | Resource;

  /**
   * 病害控制方法
   */
  PestCtrl?:string | Resource;
}

病虫害图片集可能有多个,数据源来自于云端API请求结果或本地数据库。在此我们本地定义一个数据集常量LIST_PEST_DATA。

ets>>models>>新建ArkTS文件,命名为LIST_PEST_DATA,并添加2个数组元素:

import PestModel from "./PestModel";

export const LIST_PEST_DATA:Array<PestModel>=[
  {
    ID:1,
    Img:$r('app.media.p_putao_heidou'),
    Type:'葡萄',
    PestName:'黑豆病',
  },
  {
    ID:2,
    Img:$r('app.media.p_yumi_heiseyeban'),
    Type:'玉米',
    PestName:'灰色叶斑病',
  }

遍历数据集数组对象LIST_PEST_DATA,动态加载病虫害列表项ListItem:

List(){
            ForEach(LIST_PEST_DATA,(item:PestModel,index:number)=>{
              ListItem(){
                PestListView({lstItem:item})
              }
              .margin({right:6,top:12})
              .borderRadius(12)
              .onClick(() => {
                // TODO:跳转病害详情页面

              })
            })
          }
          .width('95%')
          .margin({left:12,top:6,right:6,bottom:12})
          .lanes(2)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿花粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值