从drawable中逐个设置cardview中的图像

时间:2016-08-29 16:54:50

标签: android android-layout android-recyclerview android-drawable android-cardview

我正在尝试使用recyclerview从drawable和text逐个添加cardview中的图像。说我的drawable中有10个图像我想只使用其中的5个。那怎么办呢? 这是我的cardview:

<?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/placeCard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    card_view:cardCornerRadius="@dimen/card_corner_radius">

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

    <!-- Used for the ripple effect on touch -->
    <LinearLayout
        android:id="@+id/mainHolder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="?android:selectableItemBackground"
        android:orientation="horizontal" />

    <LinearLayout
        android:id="@+id/placeNameHolder"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_gravity="bottom"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/placeName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="left"
            android:paddingLeft="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@android:color/white" />

    </LinearLayout>

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

这是我的recyclerview适配器:

public class SubPlaceAdapter extends RecyclerView.Adapter<SubPlaceRecyclerViewHolder>{

String ImageUri;

@Override
public SubPlaceRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_places, null);

    SubPlaceRecyclerViewHolder viewHolder = new SubPlaceRecyclerViewHolder(view);
}

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

  //  holder.subPlaceImage
}

@Override
public int getItemCount() {
    return 0;
}

}

我的观点持有人:

public class SubPlaceRecyclerViewHolder extends RecyclerView.ViewHolder {

protected ImageView subPlaceImage;
protected TextView subPlaceTitle;

public SubPlaceRecyclerViewHolder(View view) {
    super(view);
    this.subPlaceImage = (ImageView) view.findViewById(R.id.placeImage);
    this.subPlaceTitle = (TextView) view.findViewById(R.id.placeName);
}

} 感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

第1步。首先创建一个模型

public class ImageModel {
    int imageId;
    String aboutText;


    public int getImageId() {
        return imageId;
    }

    public void setImageId(int imageId) {
        this.imageId = imageId;
    }

    public String getAboutText() {
        return aboutText;
    }

    public void setAboutText(String aboutText) {
        this.aboutText = aboutText;
    }    
}

第2步。创建一个方法,在您设置适配器的片段/活动中返回imageModel的arraylist

private ArrayList<ImageModel> setImageData(){
        ArrayList<ImageModel> projectList=new ArrayList<>();

        ImageModel imageModel=new ImageModel();
        imageModel.setImageId(R.mipmap.ic_star_fill);
        imageModel.setAboutText("RandomText");
        projectList.add(imageModel);

        ImageModel imageModel1=new ProjectModel();
        projectModel.setImageId(R.mipmap.ic_star_fill);
        projectModel.setAboutText("RandomText");
        projectList.add(projectModel);
        return projectList;
    }

第3步。在适配器中创建以ArrayList作为参数的构造函数

public SubPlaceAdapter(ArrayList<ImageModel> mImageList) {
        this.mActivity = mActivity;
        this.mImageList = mImageList);
    }

第4步。在您的片段/活动中设置适配器。

mSubPlaceAdapter = new SubPlaceAdapter(setImageData());

第5步。在BindView Holder上设置项目

@Override 
public void onBindViewHolder(SubPlaceRecyclerViewHolder holder, int position) {
 ImageModel imageModel= mImageList.get(position)
 holder.subPlaceImage.setImageResource(imageModel.getImageId());
} 

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

此代码将为您提供如何操作的建议。请随意修改此答案。