我可以仅将一个RecyclerView用于具有不同设计的三个不同CardView吗? [英] Can I Use Only One RecyclerView For The Three Different CardView With Different Design?

查看:78
本文介绍了我可以仅将一个RecyclerView用于具有不同设计的三个不同CardView吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以只创建一个recycler_view.xml来处理具有不同设计的三组cardview.xml吗?还是我需要为每个cardViews中的每个创建单独的recyclerView.

Can I create only one recycler_view.xml to handle my three set of cardview.xml with different design? Or Do I need to create separate recyclerView for each one of my cardViews.

例如,对于News, Activities and Groups,我有不同的CardView.

For example I have different CardView for News, Activities and Groups.

推荐答案

是的,我们可以使用多个cardView. 供参考,请参见下面的链接 示例适配器

Yes we can use multiple cardView. For reference see below link Sample Adapter

在这里,我在没有评论的情况下显示评论列表.在这里,我正在创建2个ViewHolders,一个用于我的评论项目,另一个用于无评论的项目.

Here i am showing list of reviews when no reviews i am displaying no reviews availble. Here i am creating 2 ViewHolders one for my review item and another one for no review available item.

代码:

package com.subbu.moviemasti.adapter;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.subbu.moviemasti.R;
import com.subbu.moviemasti.entities.Review;
import com.subbu.moviemasti.fragment.IReviewView;

import java.util.List;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 * Created by subrahmanyam on 24-12-2015.
 */
public class ReviewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private final List<Review> results;

    public ReviewAdapter(IReviewView reviewFragment, List<Review> results) {
        this.results = results;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = null;
        RecyclerView.ViewHolder viewHolder = null;
        switch (viewType) {
            case 0:
                view = View.inflate(parent.getContext(), R.layout.list_item_empty_view, null);
                viewHolder = new EmptyViewHolder(view);
                break;
            case 1:
                view = View.inflate(parent.getContext(), R.layout.review_list_item, null);
                viewHolder = new ViewHolder(view);
                break;
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        int viewType = getItemViewType(position);
        switch (viewType) {
            case 0:
                EmptyViewHolder emptyViewHolder = (EmptyViewHolder) holder;
                emptyViewHolder.emptyView.setText(((EmptyViewHolder) holder).emptyView.getResources().getString(R.string.no_trailers));
                break;
            case 1:
                Review review = results.get(position);
                ViewHolder viewHolder = (ViewHolder) holder;
                viewHolder.userName.setText(review.getAuthor());
                viewHolder.review.setText(review.getContent());
                break;
        }
    }

    @Override
    public int getItemCount() {
        return results.size() > 0 ? results.size() : 1;
    }

    @Override
    public int getItemViewType(int position) {
        return results.size() == 0 ? 0 : 1;
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        @Bind(R.id.review_user)
        TextView userName;
        @Bind(R.id.review_review)
        TextView review;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }
}

这篇关于我可以仅将一个RecyclerView用于具有不同设计的三个不同CardView吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆