【Harmony OS】【JAVA UI】使用ListContainer与BaseItemProvider时,删除一行item,position没有更新

 鸿蒙开发中,遇到不少小问题,今天,就来和大家分享一下我遇到的一个小问题吧,希望对大家有所帮助

 

【问题描述】

在做鸿蒙应用开发时,使用ListContainer与BaseItemProvider,当点击item中的组件,删除一行数据,并且调用刷新数据方法,报错了。

有使用getItemComponentType()方法使用多种item布局的方式,但是当我删除某一个item后,并且调用notifyDataChange方法刷新ListContainer,直接就报错说xxx组件空了。

那么如何正确使用ListContainer组件实现不同布局的复用,且在删除或插入数据之后调用getItemComponentType不会引起报错?

1、列表中第二行显示了一张图片,第三行显示的是三张图片;

2、删除List数据中对应第二行的数据,并且调用notifyDataChanged刷新列表;

3、原本的第二行被删除,第三行来到了第二行,但却变成了只显示一张图片,使用了一张图片的布局类型;

4、我猜测是因为布局复用出了问题,但却是根据官方推荐的写法来做的,这该如何解决呢?

 

【解决方案】

这个是由于是temp组件的复用导致的,可以定义一个Holder类来进行复用,可以参考官方示例代码中SettingHolder的使用:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-component-listcontainer-0000001060007847

 

image.png

image.png

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4478396/blog/5555775