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