android - studio - Agregar nuevos objetos principales a ExpandableRecyclerAdapter
recyclerview collapse (0)
Estoy usando ExpandableRecyclerView en mi proyecto para tener un RecyclerView anidado. Funciona muy bien, excepto cuando necesita actualizar dinámicamente la lista principal.
Mi proyecto tiene clase de Product
como objeto primario (y ParentListItem
extendido). Obtengo la lista de Productos de una API y, por lo tanto, necesito borrar la lista actual y agregar la Lista que tengo.
En el ExtensibleRecyclerAdapter probé este método:
public void onDataChanged(ArrayList<Product> parentObjects) {
this.getParentItemList().clear();
this.getParentItemList().addAll(parentObjects);
this.notifyItemRangeChanged(0, parentObjects.size() - 1);
}
Sin embargo, está dando un extraño error genérico
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 es del tipo List<? extends ParentListItem>
List<? extends ParentListItem>
, de modo que de acuerdo con esta pregunta , no es posible agregar nada a la lista existente y como no hay ningún setter presente, tampoco puedo reemplazar la lista completa.
Intenté crear un nuevo objeto ExpandableRecyclerAdapter
y configurarlo como un nuevo adaptador para RecyclerView. Aunque funcionó, pero no creo que sea una buena forma de reemplazar el adaptador completo cada vez que haya nuevos datos.
Entonces, ¿hay alguna otra forma de actualizar la lista de objetos padre, ya sea de una vez o una por una?