RecyclerView多条目展示

注:获取完网络数据后直接进入适配器中进行条目展示

适配器类(MAdapter):

package com.example.monizhoukao3;

import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;

import java.util.List;

/**
 * Created by DELL on 2018/5/26.
 */

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

    private Context context;
    private List<News.DataBeanX.DataBean> list;
    private int rv_type = 0;
    private int rv_type_img = 1;

    public MAdapter(Context context, List<News.DataBeanX.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .cacheInMemory(true)//使用内存缓存
            .cacheOnDisk(true)//使用磁盘缓存
            .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
            .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
            .build();

    @Override
    public int getItemViewType(int position) {
        if (list.get(position).getPics().size() == 1) {
            return rv_type;
        } else {
            return rv_type_img;
        }
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == rv_type) {
            View view = View.inflate(context, R.layout.rv_item01, null);
            ViewHolder01 viewHolder01 = new ViewHolder01(view);
            return viewHolder01;
        } else {
            View view = View.inflate(context, R.layout.rv_item02, null);
            ViewHolder02 viewHolder02 = new ViewHolder02(view);
            return viewHolder02;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        int type = getItemViewType(position);
        if (type == rv_type) {
            final ViewHolder01 holder01 = (ViewHolder01) holder;
            String title = list.get(position).getTitle();
            int views = list.get(position).getViews();

            holder01.tv_title.setText(title);
            holder01.views.setText(views + "条评论");
            ImageLoader.getInstance().displayImage("http://365jia.cn/uploads/"+list.get(position).getPics().get(0),holder01.img,options);

            holder01.img.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ObjectAnimator alpha = ObjectAnimator.ofFloat(holder01.img, "alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
                    alpha.setDuration(2000);
                    alpha.setRepeatMode(ObjectAnimator.RESTART);
                    alpha.setRepeatCount(0);
                    alpha.start();
                }
            });

            holder01.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(mOnItemLongClickListener != null){
                        //mOnItemLongClickListener.OnItemLongClick();
                    }
                }
            });
        }
        else{
            final ViewHolder02 holder02 = (ViewHolder02) holder;
            String title = list.get(position).getTitle();
            int views = list.get(position).getViews();

            holder02.title.setText(title);
            ImageLoader.getInstance().displayImage("http://365jia.cn/uploads/"+list.get(position).getPics().get(0), holder02.imageView,options);
            ImageLoader.getInstance().displayImage("http://365jia.cn/uploads/"+list.get(position).getPics().get(1),holder02.imageView2,options);
            ImageLoader.getInstance().displayImage("http://365jia.cn/uploads/"+list.get(position).getPics().get(2),holder02.imageView3,options);
            holder02.pinglun.setText(views+"条评论");

            holder02.imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ObjectAnimator alpha = ObjectAnimator.ofFloat(holder02.imageView, "alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
                    alpha.setDuration(2000);
                    alpha.setRepeatMode(ObjectAnimator.RESTART);
                    alpha.setRepeatCount(0);
                    alpha.start();
                }
            });

            holder02.imageView2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ObjectAnimator alpha = ObjectAnimator.ofFloat(holder02.imageView2, "alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
                    alpha.setDuration(2000);
                    alpha.setRepeatMode(ObjectAnimator.RESTART);
                    alpha.setRepeatCount(0);
                    alpha.start();
                }
            });

            holder02.imageView3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ObjectAnimator alpha = ObjectAnimator.ofFloat(holder02.imageView3, "alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
                    alpha.setDuration(2000);
                    alpha.setRepeatMode(ObjectAnimator.RESTART);
                    alpha.setRepeatCount(0);
                    alpha.start();
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        if (list != null) {
            return list.size();
        }
        return 0;
    }

    public class ViewHolder01 extends RecyclerView.ViewHolder {


        private final TextView tv_title;
        private final ImageView img;
        private final TextView views;

        public ViewHolder01(View itemView) {
            super(itemView);
            tv_title = itemView.findViewById(R.id.tv_title);
            img = itemView.findViewById(R.id.img);
            views = itemView.findViewById(R.id.views);
        }
    }

    public class ViewHolder02 extends RecyclerView.ViewHolder {

        private final TextView title;
        private final ImageView imageView;
        private final ImageView imageView2;
        private final ImageView imageView3;
        private final TextView pinglun;

        public ViewHolder02(View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.title);
            imageView = itemView.findViewById(R.id.imageView);
            imageView2 = itemView.findViewById(R.id.imageView2);
            imageView3 = itemView.findViewById(R.id.imageView3);
            pinglun = itemView.findViewById(R.id.pinglun);
        }
    }

    //定义接口
    public interface OnItemClickListener{
        //定义回调方法
        void OnItemClick(View view, String data);
    }

    public interface OnItemLongClickListener{
        //定义回调方法
        void OnItemLongClick(View view, String data);
    }

    //定义接口对象
    private OnItemClickListener mOnItemClickListener;
    private OnItemLongClickListener mOnItemLongClickListener;

    //暴露一个方法,将外界的对象传进来
    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        mOnItemClickListener = onItemClickListener;
    }

    public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener){
        mOnItemLongClickListener = onItemLongClickListener;
    }
}

猜你喜欢

转载自blog.csdn.net/gaoyiranblog/article/details/80771223