我在Stackerflow和Youtube上使用Recyclerview创建卡片视图,就像每个教程中说的那样。这对我来说很管用,但当我运行应用程序时,它显示的内容就像只有一个包含全部数据的Cardview。
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/reciclador"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="3dp"
android:scrollbars="vertical" />
布局卡:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imgRestaurant"
android:layout_width="400dp"
android:layout_height="100dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginTop="18dp"
card_view:srcCompat="@drawable/soporte_it" />
<TextView
android:id="@+id/lblNombre"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/imgRestaurant"
android:layout_marginTop="10dp"
android:text="Restaurant Soporte" />
<TextView
android:id="@+id/lblDescripcion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/lblNombre"
android:layout_marginTop="22dp"
android:text="TextView" />
</RelativeLayout>
</android.support.v7.widget.CardView>
数据类(clsRestaurants):
package com.soft.kukito.cardviewprueba;
/**
* Created by Hernan on 16/7/2017.
*/
public class clsRestaurants {
private int imagen_r;
private String nombre_r;
private String descripcion_r;
public clsRestaurants(int imagen_r, String nombre_r, String descripcion_r) {
this.imagen_r = imagen_r;
this.nombre_r = nombre_r;
this.descripcion_r = descripcion_r;
}
public int getImagen_r() {
return imagen_r;
}
public String getNombre_r() {
return nombre_r;
}
public String getDescripcion_r() {
return descripcion_r;
}
}
package com.soft.kukito.cardviewprueba;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.lang.reflect.Array;
import java.util.ArrayList;
import static android.os.Build.VERSION_CODES.M;
/**
* Created by Hernan on 16/7/2017.
*/
public class restaurantsAdapter extends RecyclerView.Adapter<restaurantsAdapter.restaurantsViewHolder>
{
private ArrayList<clsRestaurants> restaurant_item;
public restaurantsAdapter(ArrayList<clsRestaurants> restaurant_item) {
this.restaurant_item = restaurant_item;
}
@Override
public restaurantsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_cards,viewGroup,false);
restaurantsViewHolder restaurants = new restaurantsViewHolder(v);
return restaurants;
}
@Override
public void onBindViewHolder(restaurantsViewHolder restaurantsViewHolder, int i) {
restaurantsViewHolder.nombre.setText(restaurant_item.get(i).getNombre_r());
restaurantsViewHolder.descripcion.setText(restaurant_item.get(i).getDescripcion_r());
restaurantsViewHolder.imagen.setImageResource(restaurant_item.get(i).getImagen_r());
}
@Override
public int getItemCount() {
return restaurant_item.size();
}
public class restaurantsViewHolder extends RecyclerView.ViewHolder{
TextView nombre,descripcion;
ImageView imagen;
public restaurantsViewHolder(View itemView) {
super(itemView);
nombre=(TextView)itemView.findViewById(R.id.lblNombre);
descripcion=(TextView) itemView.findViewById(R.id.lblDescripcion);
imagen=(ImageView)itemView.findViewById(R.id.imgRestaurant);
}
}
}
我得到的:
预期结果: