HarmonyOS 鸿蒙Next ListContainer初始化数据后怎么添加Item

HarmonyOS 鸿蒙Next ListContainer初始化数据后怎么添加Item

按照官方文档写的

初始化数据

mLctDevices = (ListContainer) findComponentById(ResourceTable.Id_listContainer_devices);
sampleItemsList = new ArrayList<>();
    sampleItemsList.add(new SampleItem("Item0"));
    SampleItemProvider sampleItemProvider = new SampleItemProvider(sampleItemsList,this);
    mLctDevices.setItemProvider(sampleItemProvider);

添加数据

sampleItemsList.add(new SampleItem(device)); //device是String

但是ListContainer上只显示初始化中的item不显示之后添加的item,怎么解决?


更多关于HarmonyOS 鸿蒙Next ListContainer初始化数据后怎么添加Item的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

按照 阿伦张 的办法,解决了。以下是他的办法:

我在BaseItemProvider的子类MyProvider里定义一个如下方法,在AbilitySlice里面更新数据时,调用myProvider.upDateData(list),list为传入的新数据集,亲测有效。

重点notifyDataChanged()方法需要放在主线程!

public void upDateData(List<Device> list){
    deviceInfos=list;
    context.getUITaskDispatcher().asyncDispatch(new Runnable() {
        @Override
        public void run() {
            notifyDataChanged();
        }
    });
}

更多关于HarmonyOS 鸿蒙Next ListContainer初始化数据后怎么添加Item的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题进展

在onstart可以动态更新数据

sampleItemsList.add(new SampleItem("item0"));
sampleItemProvider = new SampleItemProvider(sampleItemsList,this);
mLctDevices.setItemProvider(sampleItemProvider);
sampleItemsList.add(new SampleItem("item1"));
sampleItemProvider.notifyDataSetItemInserted(1);

在一个回调函数里无法动态更新数据

int size=sampleItemsList.size();
sampleItemsList.add(new SampleItem(device));
sampleItemProvider.notifyDataSetItemInserted(size);

目前完整代码在https://gitee.com/young_ljty/deveco-data.git

欢迎开发小伙伴们进来帮帮楼主

能不能提供个开源项目仓库,这里代码太少看不明白

deveco-data.git

刚刚忘记把仓库公开了,

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

我觉得首先,应该把各种代码写在Slice里,MyAbility应该是没法搞UI的。

在HarmonyOS(鸿蒙)系统中,对于Next ListContainer初始化数据后添加Item的操作,可以通过以下方式进行:

ListContainer组件在鸿蒙系统中用于展示列表数据,当你已经初始化数据后,需要向其中添加Item,通常这涉及到对列表数据源的更新,并通知ListContainer重新渲染。

  1. 更新数据源:首先,确保你有一个用于存储列表项的数据源,比如一个List<T>或者其它集合类型。向这个数据源中添加新的Item。

  2. 通知ListContainer:数据源更新后,需要通知ListContainer组件重新渲染。这通常是通过绑定数据源到ListContainer的某个属性来实现的,例如使用双向数据绑定机制。当数据源发生变化时,ListContainer会自动感知并更新显示。

  3. 重新渲染:在某些情况下,如果ListContainer没有自动感知到数据源的变化,你可能需要手动触发重新渲染。这通常涉及到调用ListContainer的某个刷新方法。

请注意,具体的实现方式可能依赖于你使用的鸿蒙开发框架和版本。如果你正在使用特定的UI框架或库,请参考其文档以了解如何正确地更新和渲染ListContainer。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部