0

guys I'm new in android programming and this is the second RecyclerView + cardview that I implement but I can't get what is wrong with this. The activity shows this:

Image from the blank activity instead the recyclerView

RecyclerView.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.RecyclerView
    android:id="@+id/rvPaquetes"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

</android.support.v7.widget.RecyclerView>

CardView.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="300sp"
    android:layout_marginLeft="15sp"
    android:layout_marginRight="15sp"
    android:layout_marginTop="15sp"
    android:id="@+id/cvPaquete"
    android:background="@drawable/line_white">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/background_blue"
        android:padding="10dp"            >
        <ImageView
            android:id="@+id/ivBox"
            android:layout_marginTop="30sp"
            android:layout_centerHorizontal="true"
            android:layout_width="50sp"
            android:layout_height="50sp"
            android:src="@drawable/commercial_box"
            android:cropToPadding="false"
            />
        <TextView
            android:id="@+id/tvCB"
            android:layout_marginTop="15sp"
            android:layout_marginLeft="40sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Codigo Barra: "
            android:layout_below="@+id/ivBox"
            android:textSize="16sp"
            android:textColor="@color/white"
            />
        <TextView
            android:id="@+id/tvCBValue"
            android:layout_marginTop="15sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1691028531"
            android:layout_toRightOf="@+id/tvCB"
            android:layout_below="@+id/ivBox"
            android:textSize="16sp"
            android:textColor="@color/white"
            />
        <TextView
            android:id="@+id/tvTracking"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tracking: "
            android:layout_below="@+id/tvCB"
            android:layout_marginLeft="40sp"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/tvTrackingValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1zwwe2155121"
            android:layout_below="@+id/tvCB"
            android:layout_toRightOf="@+id/tvTracking"
            android:layout_marginLeft="30sp"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/tvRemitente"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Remitente: "
            android:layout_below="@+id/tvTracking"
            android:layout_marginLeft="40sp"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/tvRemitenteValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Conrado Rivera"
            android:layout_below="@+id/tvTracking"
            android:layout_toRightOf="@+id/tvRemitente"
            android:layout_marginLeft="30sp"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/tvConsignatario"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Consignatario: "
            android:layout_below="@+id/tvRemitente"
            android:layout_marginLeft="40sp"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/tvConsignatarioValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AMAZON"
            android:layout_below="@+id/tvRemitente"
            android:layout_toRightOf="@+id/tvConsignatario"
            android:textColor="@color/white"
            android:textSize="16sp"
            />

        <TextView
            android:id="@+id/tvFechaEnvio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Fecha de envio: "
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_marginLeft="40sp"
            android:layout_below="@+id/tvConsignatario"
            />
        <TextView
            android:id="@+id/tvFechaEnvioValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="01/07/2016"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_toRightOf="@+id/tvFechaEnvio"
            android:layout_below="@+id/tvConsignatario"
            />
        <TextView
            android:id="@+id/tvNumeroPiezas"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No. Piezas: "
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvFechaEnvio"
            android:layout_marginLeft="40sp"
            />
        <TextView
            android:id="@+id/tvNumeroPiezasValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvFechaEnvio"
            android:layout_toRightOf="@+id/tvNumeroPiezas"
            />
        <TextView
            android:id="@+id/tvPeso"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Peso: "
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvNumeroPiezas"
            android:layout_marginLeft="40sp"
            />
        <TextView
            android:id="@+id/tvPesoValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvNumeroPiezas"
            android:layout_toRightOf="@+id/tvPeso"
            />
        <TextView
            android:id="@+id/tvValorDeclarado"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Valor declarado: "
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvPeso"
            android:layout_marginLeft="40sp"
            />
        <TextView
            android:id="@+id/tvValorDeclaradoValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="350.00"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:layout_below="@+id/tvPeso"
            android:layout_toRightOf="@+id/tvValorDeclarado"
            />
        </RelativeLayout>
</android.support.v7.widget.CardView>

MainActivity.class

public class ExportacionesRastreoPaqueteActivity extends AppCompatActivity {

private ArrayList<Paquete> paquetes;
private RecyclerView listaPaquetes;

@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.activity_exportaciones_rastreo_paquete);

    listaPaquetes = (RecyclerView) findViewById(R.id.rvPaquetes);
    listaPaquetes.setHasFixedSize(true);
    LinearLayoutManager llm =  new LinearLayoutManager(this);
    llm.setOrientation(LinearLayoutManager.VERTICAL);

    listaPaquetes.setLayoutManager(llm);
    inicializarListaPaquetes();
    inicializarAdaptador();
}
public void inicializarAdaptador(){
    RVAdapterPaquete adaptador = new RVAdapterPaquete(paquetes);
    listaPaquetes.setAdapter(adaptador);
}

public void inicializarListaPaquetes(){
    paquetes = new ArrayList<Paquete>();

    paquetes.add(new Paquete("CB111111","TK222222", "Amazon", "Conrado", "13/10/2013", "2", "2", "3.16"));
    paquetes.add(new Paquete("CB111222","TK222222", "Amazon", "Conrado", "13/10/2013", "2", "2", "3.16"));
    paquetes.add(new Paquete("CB113333","TK222222", "Amazon", "Conrado", "13/10/2013", "2", "2", "3.16"));
    paquetes.add(new Paquete("CB114444","TK222222", "Amazon", "Conrado", "13/10/2013", "2", "2", "3.16"));

}}

Adapter

public class RVAdapterPaquete extends RecyclerView.Adapter{ public RVAdapterPaquete(ArrayList paquetes) { this.paquetes = paquetes; }

ArrayList<Paquete> paquetes;
@Override
public PaqueteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //Inflar o darle vida a nuestro layout
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_rastreo_resutados, parent, false);
    return new PaqueteViewHolder(v);
}

@Override
public void onBindViewHolder(PaqueteViewHolder paqueteViewHolder, int position) {
    //Asocia cada elemento de la lista con cada view
    Paquete paquete = paquetes.get(position);
    paqueteViewHolder.tvCB.setText(paquete.getCodigoBarra());
    paqueteViewHolder.tvTracking.setText(paquete.getTracking());
    paqueteViewHolder.tvRemitente.setText(paquete.getRemitente());
    paqueteViewHolder.tvConsignatario.setText(paquete.getConsignatario());
    paqueteViewHolder.tvFechaEnvio.setText(paquete.getFechaEnvio());
    //paqueteViewHolder.tvContenido.setText(paquete.getContenido());
    paqueteViewHolder.tvNumeroPiezas.setText(paquete.getPiezas());
    paqueteViewHolder.tvPeso.setText(paquete.getPeso());
    paqueteViewHolder.tvValorDeclarado.setText(paquete.getValorDeclarado());
}

@Override
public int getItemCount() { //Cantidad de elementos que contiene mi lista.
    return paquetes.size();
}

public static class PaqueteViewHolder extends RecyclerView.ViewHolder{
    //Obtiene las partes del xml a llenar

    private TextView tvCB;
    private TextView tvTracking;
    private TextView tvRemitente;
    private TextView tvConsignatario;
    private TextView tvFechaEnvio;
    //private TextView tvContenido;
    private TextView tvNumeroPiezas;
    private TextView tvPeso;
    private TextView tvValorDeclarado;


    public PaqueteViewHolder(View itemView) {
        super(itemView);

        tvCB             = (TextView) itemView.findViewById(R.id.tvCBValue);
        tvTracking       = (TextView) itemView.findViewById(R.id.tvTrackingValue);
        tvRemitente      = (TextView) itemView.findViewById(R.id.tvRemitenteValue);
        tvConsignatario  = (TextView) itemView.findViewById(R.id.tvConsignatarioValue);
        tvFechaEnvio     = (TextView) itemView.findViewById(R.id.tvFechaEnvioValue);
      //  tvContenido      = (TextView) itemView.findViewById(R.id.tvContenidoValue);
        tvNumeroPiezas   = (TextView) itemView.findViewById(R.id.tvNumeroPiezasValue);
        tvPeso           = (TextView) itemView.findViewById(R.id.tvPesoValue);
        tvValorDeclarado = (TextView) itemView.findViewById(R.id.tvValorDeclaradoValue);
    }
}

}

Data class

public class Paquete {
private String codigoBarra;
private String Tracking;
private String remitente;
private String consignatario;
private String fechaEnvio;
private String piezas;
private String peso;
private String valorDeclarado;
private  String imgRecibida;

public Paquete() {
}

public Paquete(String codigoBarra, String tracking, String remitente, String consignatario, String fechaEnvio, String piezas, String peso, String valorDeclarado) {
    this.codigoBarra = codigoBarra;
    Tracking = tracking;
    this.remitente = remitente;
    this.consignatario = consignatario;
    this.fechaEnvio = fechaEnvio;
    this.piezas = piezas;
    this.peso = peso;
    this.valorDeclarado = valorDeclarado;
}


public String getCodigoBarra() {
    return codigoBarra;
}

public void setCodigoBarra(String codigoBarra) {
    this.codigoBarra = codigoBarra;
}

public String getTracking() {
    return Tracking;
}

public void setTracking(String tracking) {
    Tracking = tracking;
}

public String getRemitente() {
    return remitente;
}

public void setRemitente(String remitente) {
    this.remitente = remitente;
}

public String getConsignatario() {
    return consignatario;
}

public void setConsignatario(String consignatario) {
    this.consignatario = consignatario;
}

public String getFechaEnvio() {
    return fechaEnvio;
}

public void setFechaEnvio(String fechaEnvio) {
    this.fechaEnvio = fechaEnvio;
}


public String getPiezas() {
    return piezas;
}

public void setPiezas(String piezas) {
    this.piezas = piezas;
}

public String getPeso() {
    return peso;
}

public void setPeso(String peso) {
    this.peso = peso;
}

public String getValorDeclarado() {
    return valorDeclarado;
}

public void setValorDeclarado(String valorDeclarado) {
    this.valorDeclarado = valorDeclarado;
}

public String getImgRecibida() {
    return imgRecibida;
}

public void setImgRecibida(String imgRecibida) {
    this.imgRecibida = imgRecibida;
}

}

  • 1
    Problem Solved it was public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); – Conrado Rivera Jul 27 '16 at 16:21

2 Answers2

1

You need to call notifyDataSetChanged(); when set the adapter to reclyclerView like this:

public void inicializarAdaptador(){
    RVAdapterPaquete adaptador = new RVAdapterPaquete(paquetes);
    listaPaquetes.setAdapter(adaptador);
    notifyDataSetChanged();
}

Otherwise the recycler will not realize that you have setted new data.

Jonathan Aste
  • 1,764
  • 1
  • 13
  • 20
  • try changing you CardView dimensions from "sp" to "dp" you are using Standard Pixels instead of Density Pixels, all views in Android must be measured in density pixels not standard pixels. – Pedro Varela Jul 27 '16 at 16:41
  • What is notifyDataSetChanged()? – Conrado Rivera Jul 27 '16 at 20:57
  • Is an RecyclerView method to update inflated data into the view. You can see documentation of android classes by holding ctrl or command in mac and click on the method name. – Jonathan Aste Aug 01 '16 at 13:52
0

In your custom adapter class, set the layout being inflated to that of the card view.xml. I.e.

public PaqueteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //Inflar o darle vida a nuestro layout
  View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview.xml, parent, false);
  return new PaqueteViewHolder(v);
}
Akinola Olayinka
  • 841
  • 7
  • 11