Android Can';不要在RecyclerView上显示图像

Android Can';不要在RecyclerView上显示图像,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,我想创建一个具有背景图像和文本视图的项目列表。虽然它通常会创建RecyclerView并设置文本,但背景图像不会设置 这是我的适配器类 public class Casino_Adapter extends RecyclerView.Adapter<Casino_Adapter.ViewHolder> { private Data[] mDataset; private ClickListener clickListener; public Co

我想创建一个具有背景图像和文本视图的项目列表。虽然它通常会创建RecyclerView并设置文本,但背景图像不会设置

这是我的适配器类

public class Casino_Adapter extends       RecyclerView.Adapter<Casino_Adapter.ViewHolder> {

    private Data[] mDataset;
    private ClickListener clickListener;
    public Context context;

    // Provide a suitable constructor (depends on the kind of dataset)
    public Casino_Adapter(Data[] myDataset) {
        this.mDataset = myDataset;
        this.context = context;

    }

    @Override
    public Casino_Adapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                        int viewType) {
        // create a new view
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.casino_card_row, parent, false);
        // set the view's size, margins, paddings and layout parameters

        ViewHolder vh = new ViewHolder(v);
        return vh;
    }


    public static class ViewHolder extends RecyclerView.ViewHolder {
        private final Context context = null;
        // each data item is just a string in this case

        public TextView mTextView;
        public ImageView mImageView;
        public CardView cardView;
        //Typeface tf;


        public ViewHolder(View v) {
            super(v);


            mTextView = (TextView) v.findViewById(R.id.text);
            mImageView = (ImageView) v.findViewById(R.id.image);
            cardView = (CardView) v.findViewById(R.id.card_view);
            //cardView.setPreventCornerOverlap(false);


        }


    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // - get element from your dataset at this position
        // - replace the contents of the view with that element
        holder.mTextView.setText(mDataset[position].getText());
        holder.mImageView.setImageResource(mDataset[position].getImage());
    }

    public void setClickListener(ClickListener clickListener) {
        this.clickListener = clickListener;
    }


    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mDataset.length;
    }

    public interface ClickListener {
        public void itemClicked(View view, int pos);
    }
}
这些是我使用的Setters

public class Data {
    int image;
    String text;

    public Data(String title, int backimage)
    {
        this.text = title;
        this.image = backimage;

    }

    public String getText()
    {
        return text;
    }

    public int getImage()
    {
        return image;
    }



    public void setText()
    {
        this.text=text;
    }

    public void setImageID()
    {
        this.image = image;
    }
}
赌场行XML

<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="8dp"
android:layout_margin="5dp">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#111111"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/image"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:background="@drawable/image_round"
        android:src="@drawable/car" />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignBottom="@+id/image"
        android:id="@+id/rel_color"
        android:background="#4c4c4c">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Μπύρα"
            android:textColor="#fcfcfc"
            android:textSize="30sp"
            android:shadowColor="#000000"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="5"
            android:id="@+id/text"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>

</RelativeLayout>
</android.support.v7.widget.CardView>

你之所以看不到你的图像,是因为它实际上不可见。 您的
rel\u color
布局与您的
ImageView
具有相同的大小属性


如果要在
ImageView
上方显示布局,只需删除其背景,否则
ImageView
将被隐藏。

就像这样。但请记住,图像的维度必须较低。就我而言,我使用了200x200

  <?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:id="@+id/rl_menu_item"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_margin="5dp"
        android:background="@android:color/transparent"
        card_view:cardCornerRadius="4dp"
        card_view:cardUseCompatPadding="true">

        <RelativeLayout
            android:id="@+id/img_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/bg_blrr">

            <ImageView
                android:id="@+id/iv_icon"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:layout_centerHorizontal="true"
                android:layout_centerInParent="true"
                android:layout_gravity="center_horizontal"
                android:adjustViewBounds="true"
                android:background="@drawable/gray_circle"
                android:padding="15dp"
                android:scaleType="centerCrop"
                android:src="@drawable/school" />

            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@id/iv_icon"
                android:layout_alignLeft="@id/iv_icon"
                android:layout_alignRight="@id/iv_icon"
                android:layout_alignStart="@id/iv_icon"
                android:layout_below="@id/iv_icon"
                android:layout_gravity="center_horizontal"
                android:gravity="center"
                android:text="Your Favourite Place"
                android:textColor="@android:color/black" />
        </RelativeLayout>

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


您可以添加
赌场卡行.xml
文件吗?我更新了它。我认为ID没有问题。你能将一个图像硬编码到回收视图的所有视图中吗?我认为你永远看不到图像,因为你的
rel_color
布局位于
图像
图像视图的顶部。它们的父布局是一个
relativelayout
,并且
imageview
rel\u color
布局都具有相同的大小属性。您是对的。我不小心将图像的测试背景硬编码到了RelativeLayout。因为它位于ImageView的顶部,所以显示为灰色。如果你想写一条评论,将其标记为答案。我太笨了。
  <?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:id="@+id/rl_menu_item"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_margin="5dp"
        android:background="@android:color/transparent"
        card_view:cardCornerRadius="4dp"
        card_view:cardUseCompatPadding="true">

        <RelativeLayout
            android:id="@+id/img_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/bg_blrr">

            <ImageView
                android:id="@+id/iv_icon"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:layout_centerHorizontal="true"
                android:layout_centerInParent="true"
                android:layout_gravity="center_horizontal"
                android:adjustViewBounds="true"
                android:background="@drawable/gray_circle"
                android:padding="15dp"
                android:scaleType="centerCrop"
                android:src="@drawable/school" />

            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@id/iv_icon"
                android:layout_alignLeft="@id/iv_icon"
                android:layout_alignRight="@id/iv_icon"
                android:layout_alignStart="@id/iv_icon"
                android:layout_below="@id/iv_icon"
                android:layout_gravity="center_horizontal"
                android:gravity="center"
                android:text="Your Favourite Place"
                android:textColor="@android:color/black" />
        </RelativeLayout>

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