5

我在我的项目中使用ExpandableRecyclerView来拥有一个嵌套的 RecyclerView。它工作得很好,除非您需要动态更新父列表。

我的项目有Product类作为父对象(和扩展ParentListItem)。我从 API 获取产品列表,因此需要清除当前列表并添加我得到的列表。

在 ExpandableRecyclerAdapter 我试过这个方法 -

public void onDataChanged(ArrayList<Product> parentObjects) {
    this.getParentItemList().clear();
    this.getParentItemList().addAll(parentObjects);

    this.notifyItemRangeChanged(0, parentObjects.size() - 1);
}

但是它给出了一个奇怪的通用错误

Error:(60, 33) error: no suitable method found for addAll(ArrayList<Product>)
method List.addAll(Collection<? extends CAP#1>) is not applicable
(actual argument ArrayList<Product> cannot be converted to Collection<? extends CAP#1> by method invocation conversion)
method List.addAll(int,Collection<? extends CAP#1>) is not applicable
(actual and formal argument lists differ in length)
method Collection.addAll(Collection<? extends CAP#1>) is not applicable
(actual argument ArrayList<Product> cannot be converted to Collection<? extends CAP#1> by method invocation conversion)
where CAP#1 is a fresh type-variable:
CAP#1 extends ParentListItem from capture of ? extends ParentListItem

parentItemList 是 type List<? extends ParentListItem>,因此根据这个问题,不可能向现有列表添加任何内容,并且由于不存在 setter,我也无法替换完整列表。

我尝试创建一个新ExpandableRecyclerAdapter对象并将其设置为 RecyclerView 的新适配器。虽然它有效,但我认为这不是在有新数据出现时替换整个适配器的好方法。

那么有没有其他方法来更新父对象列表,一次或一个?

4

0 回答 0