卡片视图中未显示图像和文字

时间:2019-03-07 09:11:50

标签: java android

我正在使用带有recyclerView的卡片视图。我遇到的问题是卡片没有显示图像和应该显示的文本,我得到的只是空卡片。有什么办法可以解决这个问题,或者我做错了什么?

avctivitymain xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:padding="8dp">

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

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

</LinearLayout>

cardsport 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="120dp"
    android:layout_height="190dp"
    android:id="@+id/car_lay"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:cardview="http://schemas.android.com/tools"
    android:layout_margin="5dp"
   app:cardCornerRadius="4dp">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/sport_image"
            android:layout_width="match_parent"
            android:layout_height="160dp"
            android:scaleType="centerCrop"/>

        <TextView
            android:id="@+id/sport_title"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textSize="14sp"
            android:gravity="center"
            android:text="frgrggr"
            android:textColor="#2d2d2d"/>

    </LinearLayout>

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

recyclerview适配器类

import java.util.List;

public class Recycler_view extends RecyclerView.Adapter<Recycler_view.myViewHolder>
{

    private Context mContext;
    private List<card> mData;

    public Recycler_view(Context mContext, List<card> mData)
    {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {

        View v;
        LayoutInflater mflate = LayoutInflater.from(mContext);
        v = mflate.inflate(R.layout.card_sport,parent,false);
        return new myViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull myViewHolder holder, int position)
    {

        holder.sport_txt.setText(mData.get(position).getType_sport());
        holder.image_view.setImageResource(mData.get(position).getImages());

    }

    @Override
    public int getItemCount()
    {
        return mData.size();
    }

    public static class myViewHolder extends RecyclerView.ViewHolder
    {

        TextView sport_txt;
        ImageView image_view;
        CardView cv;

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

            sport_txt = itemView.findViewById(R.id.sport_title);
            image_view = itemView.findViewById(R.id.sport_image);
            cv = itemView.findViewById(R.id.car_lay);
        }
    }


}

主要活动Java类

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity
{

    List<card> card_sport;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        card_sport = new ArrayList<>();
        // ADDING DATA TO THE CARD ARRAYLIST
        card_sport.add(new card("soccer",R.drawable.soccer));
        card_sport.add(new card("Cage Fighting",R.drawable.cagef));
        card_sport.add(new card("Cricket",R.drawable.cricket));
        card_sport.add(new card("WaterPolo",R.drawable.polo));
        card_sport.add(new card("Running",R.drawable.runman));
        card_sport.add(new card("Swimming",R.drawable.swim));
        card_sport.add(new card("Rugby",R.drawable.rugby));

        RecyclerView rv = findViewById(R.id.recyclerview);
        Recycler_view re_adapter = new Recycler_view(this, card_sport);
        rv.setLayoutManager(new GridLayoutManager(this,2));
        rv.setAdapter(re_adapter);




    }
}

用于getter和setter的card Java类

package com.example.dalian.cool_jungle;           

public class card                                 
{                                                 
    private String type_sport;                    
    private int images;                           


    public card()                                 
    {                                             

    }                                             



    public card(String type_sport,int images)     
    {                                             
        type_sport= type_sport;                   
        images = images;                          
    }                                             

    public String getType_sport()                 
    {                                             
        return type_sport;                        
    }                                             

    public int getImages()                        
    {                                             
        return images;                            
    }                                             

    public void setType_sport()                   
    {                                             
        type_sport =type_sport;                   
    }                                             

    public void setImages()                       
    {                                             
        images = images;                          
    }                                             




}  

log

line 17

line 47

after a taken "this" out my card class it just shows blank cards

2 个答案:

答案 0 :(得分:0)

您上面的所有代码都可以。如果您正确设置了卡对象,将没有问题。可能是这样:

public class card {
    private String type_sport;
    private int image;

    public card(String type_sport, int image) {
        this.type_sport = type_sport;
        this.image = image;
    }

    public String getType_sport() {
        return type_sport;
    }

    public void setType_sport(String type_sport) {
        this.type_sport = type_sport;
    }

    public int getImages() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }
}

答案 1 :(得分:0)

您不需要传递上下文,可以从父视图组中获取上下文。您也不需要使视图持有人成为静态类,这可能会有所帮助。

相关问题