HarmonyOS开发详解(五)——鸿蒙高级组件数据动态绑定案例实践_鸿蒙 findcomponentbyid

1)定义ListContainer:layout下创建ListContainer组件

2)定义每项布局:layout下创建ListContainer的内容,即子布局,如果是带标题、简介、图片的新闻列表,就定义两个text和一个image。

3)定义数据实体类:每一条列表的具体组成java类

4)定义每条列表项的属性:通过实现BaseItemProvider类;因为每项列表内容不确定,通过重写getComponent方法,返回每项布局内容(第二步中的layerout是自定义且空的,这里定义布局和数据的组合方法)

5)组装ListContainer:通过BaseItemProvider的实现类将数据和ListContainer组合起来;

6)注册其他行为:比如定义点击事件、定义更新数据;

完整代码太长,结合上述步骤贴出核心代码,上部分布局类代码,下部分java类代码:

//第一步创建layerout下ListContainer布局页面
    <ListContainer
        ohos:id="$+id:list_container"
        ohos:height="200vp"
        ohos:width="350vp"
        ohos:layout_alignment="horizontal_center"/>
//第二步创建子布局,这里用两个字段name和address来展示
    <Text
        ohos:id="$+id:item_index"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:padding="4vp"
        ohos:text="Item0"
        ohos:text_size="20fp"
        ohos:layout_alignment="center"/>
    <Text
        ohos:id="$+id:item_index1"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:padding="4vp"
        ohos:text="Item0"
        ohos:text_size="20fp"
        ohos:layout_alignment="left"/>
//第三步,创建ItemBean实体类
public class ItemBean {
    private String name;
    private String address;
    public ItemBean(String name,String address) {
        this.name = name;
        this.address=address;
    }
    //属性get、set方法省略...
}

//第四步,实现BaseItemProvider类,必须实现以下override方法,这样系统就可以根据这些方法对listContainer内容进行组装,并提供一些行为(比如查询长度、返回ID)
public class ItemProvider extends BaseItemProvider {
    private List<ItemBean> list;
    private AbilitySlice abilitySlice;
    public ItemProvider(List<ItemBean> list, AbilitySlice abilitySlice) {
        this.list = list;
        this.abilitySlice = abilitySlice;
    }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Object getItem(int i) {
        if(list!=null&&list.s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值