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
按照 阿伦张 的办法,解决了。以下是他的办法:
我在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重新渲染。
-
更新数据源:首先,确保你有一个用于存储列表项的数据源,比如一个List<T>或者其它集合类型。向这个数据源中添加新的Item。
-
通知ListContainer:数据源更新后,需要通知ListContainer组件重新渲染。这通常是通过绑定数据源到ListContainer的某个属性来实现的,例如使用双向数据绑定机制。当数据源发生变化时,ListContainer会自动感知并更新显示。
-
重新渲染:在某些情况下,如果ListContainer没有自动感知到数据源的变化,你可能需要手动触发重新渲染。这通常涉及到调用ListContainer的某个刷新方法。
请注意,具体的实现方式可能依赖于你使用的鸿蒙开发框架和版本。如果你正在使用特定的UI框架或库,请参考其文档以了解如何正确地更新和渲染ListContainer。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,