populateViewHolder una sola vez

22 views
Skip to first unread message

Donis

unread,
Sep 17, 2016, 1:15:55 PM9/17/16
to desarrolladores-android

Hola estoy intentando utilizar el FireBaseRecyclerAdapter pero el populateViewHolder solo se me ejecuta 1 vez, y en la base de datos de FireBase tengo mas de un elemento. Le he añadido al FireBaseRecyclerAdapter un AdapterDataObserver y en el método onItemRangeChanged si que se ejecuta tantas veces como items tengo en la base de datos pero en el populateView sigue ejecutándose una sola vez.


Os pongo mi código:


Base de datos FireBase: 


public class MyFireBaseAdapterRecycleView extends FirebaseRecyclerAdapter<ModeloDatos,MyFireBaseAdapterRecycleView.MyFireViewHolder> {

public MyFireBaseAdapterRecycleView(Class<ModeloDatos> modelClass, int modelLayout, Class<MyFireViewHolder> viewHolderClass, DatabaseReference ref) {
    super(modelClass, modelLayout, viewHolderClass, ref);
}

@Override
protected void populateViewHolder(MyFireViewHolder viewHolder, ModeloDatos modelo, int position) {
    viewHolder.bindDatos(modelo);
}

/** Clase ViewHolder interna */
public static class MyFireViewHolder extends RecyclerView.ViewHolder {
    private TextView uidUsuario;
    private TextView uidImagen;
    public MyFireViewHolder(View itemView) {
        super(itemView);
        uidUsuario = (TextView)itemView.findViewById(R.id.tvIdUsuario);
        uidImagen = (TextView)itemView.findViewById(R.id.tvIdImagen);
    }

    public void bindDatos(ModeloDatos datos){
        uidUsuario.setText(datos.getUidUser());
        uidImagen.setText(datos.getUidImagen());
    }


Código del AdapterDataObserver:


public class AdapterFireDataObserver extends RecyclerView.AdapterDataObserver {
@Override
public void onItemRangeChanged(int positionStart, int itemCount) {
    super.onItemRangeChanged(positionStart, itemCount);
}


Código del Modelo de datos:


public class ModeloDatos {
private String uidUser;
private String uidImagen;

public ModeloDatos() {
}

public String getUidUser() {
    return uidUser;
}

public void setUidUser(String uidUser) {
    this.uidUser = uidUser;
}

public String getUidImagen() {
    return uidImagen;
}

public void setUidImagen(String uidImagen) {
    this.uidImagen= uidImagen;
}


y código de la actividad:


 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_recycle);
    adaptador = new MyFireBaseAdapterRecycleView(ModeloDatos.class, R.layout.fila_fire_recycle,
            MyFireBaseAdapterRecycleView.MyFireViewHolder.class, FirebaseDatabase.getInstance().getReference().child("Imagenes"));
    recyclerView = (RecyclerView)findViewById(R.id.rvSGOliver);
    recyclerView.setHasFixedSize(true);
    observer = new AdapterFireDataObserver();
    adaptador.registerAdapterDataObserver(observer);
    recyclerView.setAdapter(adaptador);
    recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
}


Muchas Gracias!


Reply all
Reply to author
Forward
0 new messages