RecycleView的使用方法

1、首先导入下方依赖

compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

2、再布局文件书写recycleview控件

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

3、添加布局管理器

GridLayoutManager manager = new GridLayoutManager(context, 2, GridLayoutManager.VERTICAL, false);//网格布局管理器
LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);//流式布局管理器
.setLayoutManager(manager);//添加布局管理器的方法
.setAdapter(new Hot1_adapter(context, activityInfo));//添加适配器的方法(一般需要传入上下文和数据集合)

4、适配器的书写

package com.example.week1demo2.adapter;

import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.week1demo2.R;
import com.example.week1demo2.app.ImageLoder;
import com.example.week1demo2.bean.Bean;
import com.youth.banner.Banner;

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

/**
 * Created by 墨鸦 on 2017/12/31.
 */

public class Main_adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    //轮播图
    private List<Bean.DataBean.Ad1Bean> ad1;
    //分类框
    private List<Bean.DataBean.Ad5Bean> ad5;
    //热门活动
    private List<Bean.DataBean.ActivityInfoBean.ActivityInfoListBean> activityInfo;
    //热门专题
    private List<Bean.DataBean.SubjectsBean> subjects;

    public Main_adapter(Context context, List<Bean.DataBean.Ad1Bean> ad1, List<Bean.DataBean.Ad5Bean> ad5, List<Bean.DataBean.ActivityInfoBean.ActivityInfoListBean> activityInfo, List<Bean.DataBean.SubjectsBean> subjects) {
        this.context = context;
        this.ad1 = ad1;
        this.ad5 = ad5;
        this.activityInfo = activityInfo;
        this.subjects = subjects;
    }
    //这是多条目加载,根position来确定类型
    @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return 1;
        } else if (position == 1) {
            return 2;
        } else if (position == 2) {
            return 3;
        } else if (position == 3) {
            return 4;
        } else if (position == 4) {
            return 5;
        } else {
            return 6;
        }
    }
    //根据类型加载相对应的视图捆绑相对应的viewholder
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == 1) {
            View view = View.inflate(context, R.layout.layout_banner, null);
            ViewHolder holder = new ViewHolder(view);
            return holder;
        } else if (viewType == 2) {
            View view = View.inflate(context, R.layout.layout_type, null);
            ViewHolder1 holder1 = new ViewHolder1(view);
            return holder1;
        } else if (viewType == 3) {
            View view = View.inflate(context, R.layout.layout_text, null);
            ViewHolder2 holder2 = new ViewHolder2(view);
            return holder2;
        } else if (viewType == 4) {
            View view = View.inflate(context, R.layout.layout_hot1, null);
            ViewHolder3 holder3 = new ViewHolder3(view);
            return holder3;
        } else if (viewType == 5) {
            View view = View.inflate(context, R.layout.layout_text, null);
            ViewHolder4 holder4 = new ViewHolder4(view);
            return holder4;
        } else {
            View view = View.inflate(context, R.layout.layout_hot2, null);
            ViewHolder5 holder5 = new ViewHolder5(view);
            return holder5;
        }
    }
    //通过绑定的适配器进行相对应的视图显示操作
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ViewHolder) {  //如果返回的holder是viewholder1进行相对应的操作
            Banner banner = ((ViewHolder) holder).banner;
            List<String> list = new ArrayList<>();
            for (int i = 0; i < ad1.size(); i++) {
                list.add(ad1.get(i).getImage());
            }
            banner.setImageLoader(new ImageLoder());
            banner.setImages(list);
            banner.start();
        } else if (holder instanceof ViewHolder1) {
            RecyclerView type_recyclerview = ((ViewHolder1) holder).type_recyclerview;
            LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
            type_recyclerview.setLayoutManager(manager);
            type_recyclerview.setAdapter(new Type_adapter(context, ad5));
        } else if (holder instanceof ViewHolder2) {
            TextView titlt = ((ViewHolder2) holder).titlt;
            titlt.setText("热门活动");
        } else if (holder instanceof ViewHolder3) {
            RecyclerView hot1_recyclerview = ((ViewHolder3) holder).hot1_recyclerview;
            LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
            hot1_recyclerview.setLayoutManager(manager);
            hot1_recyclerview.setAdapter(new Hot1_adapter(context, activityInfo));
        } else if (holder instanceof ViewHolder4) {
            TextView titlt = ((ViewHolder4) holder).titlt;
            titlt.setText("热门专题");
        } else if (holder instanceof ViewHolder5) {
            RecyclerView hot2_recyclerview = ((ViewHolder5) holder).hot2_recyclerview;
            GridLayoutManager manager = new GridLayoutManager(context, 2, GridLayoutManager.VERTICAL, false);
            hot2_recyclerview.setLayoutManager(manager);
            hot2_recyclerview.setAdapter(new Hot2_adapter(context, subjects));
        }
    }
    //返回要加载的条目数量(一般是传过来的集合.size,这个适配器有特殊需求所以条目数打死了)
    @Override
    public int getItemCount() {
        return 6;
    }
    //创建viewholder找到要操作的控件
    class ViewHolder extends RecyclerView.ViewHolder {

        private final Banner banner;

        public ViewHolder(View itemView) {
            super(itemView);
            banner = itemView.findViewById(R.id.banner);
        }
    }

    class ViewHolder1 extends RecyclerView.ViewHolder {

        private final RecyclerView type_recyclerview;

        public ViewHolder1(View itemView) {
            super(itemView);
            type_recyclerview = itemView.findViewById(R.id.type_recyclerview);
        }
    }

    class ViewHolder2 extends RecyclerView.ViewHolder {

        private final TextView titlt;

        public ViewHolder2(View itemView) {
            super(itemView);
            titlt = itemView.findViewById(R.id.titlt);
        }
    }

    class ViewHolder3 extends RecyclerView.ViewHolder {

        private final RecyclerView hot1_recyclerview;

        public ViewHolder3(View itemView) {
            super(itemView);
            hot1_recyclerview = itemView.findViewById(R.id.hot1_recyclerview);
        }
    }

    class ViewHolder4 extends RecyclerView.ViewHolder {

        private final TextView titlt;

        public ViewHolder4(View itemView) {
            super(itemView);
            titlt = itemView.findViewById(R.id.titlt);
        }
    }

    class ViewHolder5 extends RecyclerView.ViewHolder {

        private final RecyclerView hot2_recyclerview;

        public ViewHolder5(View itemView) {
            super(itemView);
            hot2_recyclerview = itemView.findViewById(R.id.hot2_recyclerview);
        }
    }
}

5、适配器的书写2(简单版无多条目加载)

package com.example.week1demo2.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;

import com.example.week1demo2.R;
import com.example.week1demo2.bean.Bean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by 墨鸦 on 2018/1/1.
 */

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

    private Context context;
    private List<Bean.DataBean.ActivityInfoBean.ActivityInfoListBean> activityInfo;

    public Hot1_adapter(Contextcontext,List<Bean.DataBean.ActivityInfoBean.ActivityInfoListBean> activityInfo) {
        this.context = context;
        this.activityInfo = activityInfo;
    }

    @Override
    public Hot1_adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context,R.layout.layout_hot1_show, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(Hot1_adapter.ViewHolder holder, int position) {
        holder.hot1_fresco.setImageURI(activityInfo.get(position).getActivityImg());
    }

    @Override
    public int getItemCount() {
        return activityInfo.size();
    }
    class ViewHolder extends RecyclerView.ViewHolder{

        private final SimpleDraweeView hot1_fresco;

        public ViewHolder(View itemView) {
            super(itemView);
            hot1_fresco = itemView.findViewById(R.id.hot1_fresco);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值