HarmonyOS UltimateProvider简单快速的使用ListContainer 3年前

目录:

1.简单的显示(显示一种布局)

2.简单的显示(显示多种布局)

3.嵌套ListContainer

4.ItemView中的按钮点击,等事件

UltimateProvider(适配器)简单快速的使用ListContainer而不需要写Provider。此框架是CHGAdapter的鸿蒙版本
UltimateProvider
UltimateProvider(Adapter)简单快速的使用ListContainer而不需要写Provider。此框架是CHGAdapter的鸿蒙版本

安卓(CHGAdapter)
Java:https://github.com/chenhaigang888/CHGAdapter_android
Kotlin:https://github.com/chenhaigang888/CHGAdapter_Kotlin
ios(CHGAdapter)
oc:https://github.com/chenhaigang888/CHGAdapter
swift:https://github.com/chenhaigang888/CHGAdapter_swift
HarmonyOS(UltimateProvider)
java:https://github.com/chenhaigang888/UltimateProvider
如有使用方面的问题或者交流请加QQ群:494648687

1.简单的显示(显示一种布局)
文件SongSlice.java

public class SongSlice extends AbilitySlice {
    private ListContainer listContainer;
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_song);
        listContainer = (ListContainer) findComponentById(ResourceTable.Id_listContainer);
        listContainer.setItemProvider(new UltimateProvider(getSongs(),getContext()));
    }
    List getSongs(){
        List list = new ArrayList();
        for (int i=0; i<100; i++) {
            list.add(new SongModel("歌曲名称:"+i,"歌手:"+i));
        }
        return list;
    }
}

文件SongModel.java模型

public class SongModel implements Model {
    private String name;
    private String singer;

    @Override
    public int getResources(int position) {
        return ResourceTable.Layout_song_item;
    }
    @Override
    public Class getHolderClass(int position) {
        return SongViewHolder.class;
    }
}

文件SongViewHolder.java模型

public class SongViewHolder extends ViewHolder<SongModel> {
    private Image icon;
    private Text songName;
    private Text songer;
    public SongViewHolder(EventTransmissionListener eventTransmissionListener, Component component, UltimateProvider provider) {
        super(eventTransmissionListener, component,provider);
        icon = (Image) findComponentById(ResourceTable.Id_icon);
        songName = (Text) findComponentById(ResourceTable.Id_songName);
        songer = (Text) findComponentById(ResourceTable.Id_songer);
    }
    @Override
    public void onDataBound() {
        songName.setText(getModel().getName());
        songer.setText(getModel().getSinger());
    }
}

效果1:

HarmonyOS UltimateProvider简单快速的使用ListContainer

2.简单的显示(显示多种布局)
RecommendSlice.java

public class RecommendSlice extends AbilitySlice {
    private ListContainer listContainer;
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_recommend);
        listContainer = (ListContainer) findComponentById(ResourceTable.Id_listContainer);
        listContainer.setItemProvider(new UltimateProvider<Model>(getData(),getContext()));
    }
    List getData(){
        List list = new ArrayList();
        for (int i=0; i<100; i++) {
            if (i %2 == 0) {
                list.add(new SongModel("歌曲名称:"+i,"歌手名称:"+i));
            } else {
                list.add(new AlbumModel("专辑名称:"+i,"歌手"));
            }
        }
        return list;
    }
}

文件AlbumModel.java模型

public class AlbumModel implements Model {
    private String name;
    private String songer;
    @Override
    public int getResources(int position) {
        return ResourceTable.Layout_album_item;
    }
    @Override
    public Class getHolderClass(int position) {
        return AlbumViewHolder.class;
    }
}

文件AlbumViewHolder.java

public class AlbumViewHolder extends ViewHolder<AlbumModel> {
    private Text name;
    private Text songer;
    public AlbumViewHolder(EventTransmissionListener eventTransmissionListener, Component component, UltimateProvider provider) {
        super(eventTransmissionListener, component,provider);
        name = (Text) findComponentById(ResourceTable.Id_name);
        songer = (Text) findComponentById(ResourceTable.Id_songer);
    }
    @Override
    public void onDataBound() {
        name.setText(getModel().getName());
        songer.setText(getModel().getSonger());
    }
}

效果2:

  HarmonyOS UltimateProvider简单快速的使用ListContainer

3.嵌套ListContainer
NestedListAbility.java

public class NestedListSlice extends AbilitySlice {
    private ListContainer listContainer;
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_nested_list);
        listContainer = (ListContainer) findComponentById(ResourceTable.Id_listContainer);
        listContainer.setItemProvider(new UltimateProvider<Model>(getData(), getContext()));
    }
    List getData() {
        List list = new ArrayList();
        for (int i=0; i<100; i++) {
            if (i%5 == 0) {
                list.add(new SongModel("歌曲名称:"+i,"歌手:"+i));
            } else if (i%5 == 1) {
                list.add(new AlbumModel("推荐专辑:"+i,"歌手:"+i));
            } else if (i%5 == 2) {
                list.add(creageMusicData(i,i%2));
            } else {
                list.add(creageHybridData());
            }
        }
        return list;
    }
    /*创建推荐内容*/
    MusicModel creageMusicData(int position,int type){
        List list = new ArrayList();
        String title = type == 0 ? "推荐歌曲":"推荐专辑";
        for (int i=0; i< 100; i++) {
            if (type == 0) {
                list.add(new NestedSongModel("推荐歌曲:"+i,"歌手:"+i));
            } else if(type == 1){
                list.add(new NestedAlbumModel("推荐专辑:"+i,"歌手:"+i));
            }
        }
        return new MusicModel(title + position,list);
    }
    /*创建推荐内容*/
    MusicModel creageHybridData(){
        List list = new ArrayList();
        for (int i=0; i< 100; i++) {
            if (i %2 == 0) {
                list.add(new NestedSongModel("推荐歌曲:"+i,"歌手:"+i));
            } else {
                list.add(new NestedAlbumModel("推荐专辑:"+i,"歌手:"+i));
            }
        }
        return new MusicModel("推荐的歌曲+专辑",list);
    }
}

文件MusicModel.java模型

public class MusicModel implements Model {
    private String title;
    private List data;
    @Override
    public int getResources(int position) {
        return ResourceTable.Layout_music_item;
    }
    @Override
    public Class getHolderClass(int position) {
        return MusicViewHolder.class;
    }
}

文件MusicViewHolder.java

public class MusicViewHolder extends ViewHolder<MusicModel> {
    private Text title;
    private ListContainer listContainer;
    private UltimateProvider ultimateProvider;
    public MusicViewHolder(EventTransmissionListener eventTransmissionListener, Component component,UltimateProvider provider) {
        super(eventTransmissionListener, component,provider);
        title = (Text) findComponentById(ResourceTable.Id_title);
        listContainer = (ListContainer) findComponentById(ResourceTable.Id_listContainer);
        ultimateProvider = new UltimateProvider(null,getContext());
    }
    @Override
    public void onDataBound() {
        title.setText(getModel().getTitle());
        ultimateProvider.setModels(getModel().getData());
        listContainer.setItemProvider(ultimateProvider);
    }
}

效果3:

  HarmonyOS UltimateProvider简单快速的使用ListContainer

查看更多章节>>>

作者: mb5fed9a0375f80

想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/

综合蔬果干干干
别把耿直当理由。
2
发布数
2
关注者
1357
累计阅读

热门教程文档

Redis
14小节
Linux
51小节
QT
33小节
React
18小节
10.x
88小节