阅读背景:

recyclerView多条目展示,ArgbEvaluator颜色渐变

来源:互联网 

效果图


adapter 

package com.example.liuan.takeout.ui.adapter;

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

import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import com.example.liuan.takeout.R;
import com.example.liuan.takeout.model.bean.HomeInfo;
import com.example.liuan.takeout.model.bean.Promotion;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 * Name: HomeAdapter
 * Action:
 * Author: liuan
 * creatTime:2017-02-05 10:39
 */
public class HomeAdapter extends RecyclerView.Adapter {
    private static final int ITEM_HEADER = 0;//最上面
    private static final int ITEM_SELLER = 1;//一般商家
    private static final int ITEM_DIV = 2;//分割线



    private Activity activity;
    private HomeInfo data;

    public HomeAdapter(Activity activity) {
        this.activity = activity;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //返回包含的view的VIewHolder
        //viewType就是在getItemViewType(position)返回状态码中的某一个
        switch (viewType) {
            case ITEM_HEADER:
                //准备view 上下文也能用activity

                View view = View.inflate(parent.getContext(), R.layout.item_title, null);
                HeaderHolder headerHolder = new HeaderHolder(view);
                return headerHolder;

            case ITEM_SELLER:
                View view2 = View.inflate(parent.getContext(), R.layout.item_seller, null);
                SellerHolder sellerHolder = new SellerHolder(view2);
                return sellerHolder;
            case ITEM_DIV:
                View view3 = View.inflate(parent.getContext(), R.layout.item_division, null);
                DivHolder divHolder = new DivHolder(view3);
                return divHolder;
        }
        return null;

    }

    //给ViewHolder绑定数据
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//        if(holder instanceof  SellerHolder){}
//        if(holder instanceof  SellerHolder){}
//        if(holder instanceof  SellerHolder){}

        if (position == 0) {


        } else if (data.getBody().get(position - 1).type == 0) {
            //商家
            setSellerHolderDataHolderData(holder, position - 1);
        } else {
            //分割线条目
            //给divHolder中的多个TextViee赋值
            setDIVHolderData(holder, position - 1);

        }
    }

    private void setSellerHolderDataHolderData(RecyclerView.ViewHolder holder, int position) {
        ((SellerHolder) holder).tvTitle.setText(data.getBody().get(position).getSeller().getName());
        ((SellerHolder) holder).tvCount.setText(data.getBody().get(position).getSeller().getScore());
        ((SellerHolder) holder).ratingBar.setNumStars(5);

    }


    private void setDIVHolderData(RecyclerView.ViewHolder holder, int position) {
        ((DivHolder) holder).tv1.setText(data.getBody().get(position).getRecommendInfos().get(0));
        ((DivHolder) holder).tv2.setText(data.getBody().get(position).getRecommendInfos().get(1));
        ((DivHolder) holder).tv3.setText(data.getBody().get(position).getRecommendInfos().get(2));
        ((DivHolder) holder).tv4.setText(data.getBody().get(position).getRecommendInfos().get(3));
        ((DivHolder) holder).tv5.setText(data.getBody().get(position).getRecommendInfos().get(4));
        ((DivHolder) holder).tv6.setText(data.getBody().get(position).getRecommendInfos().get(5));
    }

    //多条目展示需要使用此方法
    @Override
    public int getItemViewType(int position) {
        //索引位置为0的时候 header条目
        //服务器端传递type为1 的时候 分割线条目
        //服务器端传递type为0 的时候 一般商家条目
        if (position == 0) {

            return ITEM_HEADER;

        } else if (data.getBody().get(position - 1).type == 0) {
            return ITEM_SELLER;
        } else {
            return ITEM_DIV;
        }


    }

    @Override
    public int getItemCount() {
        if (data != null && data.getBody() != null && data.getHead() != null && data.getBody().size() > 0) {
            return data.getBody().size() + 1;
        }
        return 0;
    }

    public void setData(HomeInfo data) {
        this.data = data;
        notifyDataSetChanged();
    }

    class HeaderHolder extends RecyclerView.ViewHolder {
        //在创建holder的时候 必须传递一个view对象 就是一个条目的布局转换成view对象
        @Bind(R.id.slider)
        SliderLayout slider;
        public HeaderHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
            //data对象header里面
            int picCount = data.getHead().getPromotionList().size();
            for (int i = 0; i < picCount; i++) {
                //显示图片和描述文本的控件
                TextSliderView textSliderView = new TextSliderView(activity);
                Promotion promotion = data.getHead().getPromotionList().get(i);
                //指定了描述文本
                textSliderView.description(promotion.getInfo())
                        //图片连接地址
                        .image(promotion.getPic())
                        //图片展示方式
                        .setScaleType(BaseSliderView.ScaleType.Fit);
                //将textSliderView加进去
                slider.addSlider(textSliderView);
                //动画类型
            }
            slider.setPresetTransformer(SliderLayout.Transformer.RotateDown);
            //可以设置轮播容器内部点所在位置
            slider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
            //文本描述出现的时候 指定的动画
            slider.setCustomAnimation(new DescriptionAnimation());
            slider.setDuration(4000);
        }
    }

    class SellerHolder extends RecyclerView.ViewHolder {
        @Bind(R.id.tvCount)
        TextView tvCount;
        @Bind(R.id.tv_title)
        TextView tvTitle;
        @Bind(R.id.ratingBar)
        RatingBar ratingBar;

        //在创建holder的时候 必须传递一个view对象 就是一个条目的布局转换成view对象
        public SellerHolder(View itemView) {

            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }

    class DivHolder extends RecyclerView.ViewHolder {
        @Bind(R.id.tv_division_title)
        TextView tvDivisionTitle;
        @Bind(R.id.tv1)
        TextView tv1;
        @Bind(R.id.tv2)
        TextView tv2;
        @Bind(R.id.tv3)
        TextView tv3;
        @Bind(R.id.tv4)
        TextView tv4;
        @Bind(R.id.tv5)
        TextView tv5;
        @Bind(R.id.tv6)
        TextView tv6;

        //在创建holder的时候 必须传递一个view对象 就是一个条目的布局转换成view对象
        public DivHolder(View itemView) {

            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }


}
package com.example.liua



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: