¿Es posible tener una clase genérica que devuelva un soporte de vista inflado en un adaptador de reciclador?

ACTUALIZAR:

Me las arreglo para hacerlo, pero no estoy muy seguro de si es la forma correcta.

HolderMap.java

HolderMap de clase pública {

Clase privada mClass;
diseño privado int;

Public HolderMap (Class mClass, int layout) {
this.mClass = mClass;
this.layout = layout;
}

public Class GetClass () {return mClass; }

public int GetLayout () {return layout; }
}

Main.java

List holder = new ArrayList ();

holder.add (nuevo HolderMap (HeaderView.class, R.layout.header_row));
holder.add (nuevo HolderMap (ItemView.class, R.layout.item_row));
holder.add (nuevo HolderMap (FooterView.class, R.layout.footer_row));

Adapter.java

@Anular
public CRecyclerViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {
tratar {

Clase TClass = holderMaps.get (viewType) .GetClass ();
Constructor Constructor = tClass.getConstructor (View.class);
int layoutRes = holderMaps.get (viewType) .GetLayout ();

constructor return (CRecyclerViewHolder)
.newInstance (LayoutInflater.from (parent.getContext ())
.inflate (layoutRes, parent, false));

} catch (Excepción e) {
e.printStackTrace ();
}
volver nulo;
}

La forma en que funciona es que viewType se usará como un índice para asignar el marcador de vista en la lista de arrays para obtener su clase y su diseño e inflarlo.

Bueno, no sé por qué no quieres editar tu clase de adaptador, pero puedes hacerlo (no lo he probado)

  1. Cree una lista de matrices estática de marcadores de vista inflados donde el índice corresponde a la variable viewType .
  2. En onCreateViewHolder, luego devuelve el marcador de vista requerido al pasar la variable viewType como índice en esa lista de arrays estática que creó anteriormente. Entonces, a medida que agrega nuevos ViewHolders fuera de su adaptador Recyclerview y accede a él dentro de él.

Pruébalo y avísame si funciona 🙂