recyclerview的使用

来源:互联网 发布:送货单软件破解 编辑:程序博客网 时间:2024/05/23 02:27

recyclerview的使用之前必须导入依赖:

compile 'com.android.support:recyclerview-v7:23.4.0'下面的适配器:可供参考:
public class myadpter1 extends RecyclerView.Adapter<myadpter1.holde>{   public Context context;    public List<Nai.ResultBean.BrandsBean.ProductsBean> products;    public myadpter1(Context context, List<Nai.ResultBean.BrandsBean.ProductsBean> products) {        this.context = context;        this.products = products;    }    @Override    public myadpter1.holde onCreateViewHolder(ViewGroup parent, int viewType) {        View inflate = LayoutInflater.from(context).inflate(R.layout.recy_girst, parent, false);       holde holde=new holde(inflate);        return holde;    }    @Override    public void onBindViewHolder(myadpter1.holde holder, int position) {        Glide.with(context).load(products.get(position).getPic()).into(holder.image_recygrid);        holder.text_recygrid.setText(products.get(position).getName());    }    @Override    public int getItemCount() {        return products.size();    }   public class holde extends RecyclerView.ViewHolder{        private final ImageView image_recygrid;        private final TextView text_recygrid;        public holde(View itemView) {            super(itemView);            image_recygrid = (ImageView) itemView.findViewById(R.id.image_recygrid);            text_recygrid = (TextView) itemView.findViewById(R.id.text_recygrid);        }    }}recyclerview 的多条目布局仅供参考:
public class Recyviewadpter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    Context context;    private List<Make.DataBean.SubjectsBean.GoodsListBean> goodsList;    int type1=0;    int type2=1;  public  itemclink itemclink;    public Recyviewadpter(Context context, List<Make.DataBean.SubjectsBean.GoodsListBean> goodsList) {        this.context = context;        this.goodsList = goodsList;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if(viewType==type1)        {            View inflate = View.inflate(context, R.layout.recy_spring, null);      listadpter listadpter=new listadpter(inflate);            return listadpter;        }else if(viewType==type2){            View inflate = View.inflate(context, R.layout.recy_spring_but, null);        butadter butadter=new butadter(inflate);            return butadter;        }        return null;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        if(holder.getItemViewType()==type1)        {           listadpter listadpter= (listadpter) holder;            Glide.with(context)                    .load(goodsList.get(position).getGoods_img())                    .into(listadpter.image_spring);            listadpter.image_spring .setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    if(itemclink!=null)                    {                        itemclink.setOnoitemclink(v,position);                    }                }            });            listadpter.text_efficacy.setText(goodsList.get(position).getEfficacy()+"|");            listadpter.text_goods_name.setText(goodsList.get(position).getGoods_name());            listadpter.text_spring_price.setText("¥"+""+goodsList.get(position).getShop_price()+"|");            listadpter.text_spring_oldprice.setText("¥"+goodsList.get(position).getMarket_price());        }        else if(holder.getItemViewType()==type2)        {          butadter  butadter=(butadter)holder;        }    }    @Override    public int getItemCount() {        return 6;    }    public class listadpter extends RecyclerView.ViewHolder{        private final ImageView image_spring;        private final TextView text_efficacy;        private final TextView text_spring_price;        private final TextView text_spring_oldprice;        private final TextView text_goods_name;        public listadpter(View itemView) {            super(itemView);            image_spring = (ImageView) itemView.findViewById(R.id.image_spring);            text_efficacy = (TextView) itemView.findViewById(R.id.text_efficacy);            text_spring_price = (TextView) itemView.findViewById(R.id.text_spring_price);            text_spring_oldprice = (TextView) itemView.findViewById(R.id.text_spring_oldprice);            text_goods_name = (TextView) itemView.findViewById(R.id.text_goods_name);        }    }    public class butadter extends RecyclerView.ViewHolder{        private final ImageView image_but;        public butadter(View itemView) {            super(itemView);            image_but = (ImageView) itemView.findViewById(R.id.image_but);        }    }    @Override    public int getItemViewType(int position) {        if(position==5)        {            return  type2;        }        else{            return type1;        }    }    //recyview的点击事件    public interface itemclink    {        void setOnoitemclink(View view,int position);    }    public void setOnitemclink(itemclink itemclink)    {        this.itemclink=itemclink;    }}

//下面是分割线的工具类:
package com.bawei.liujianrui.activity.activity;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;/** * Created by Administrator on 2017/4/24. */public class DividerItemDecoration extends RecyclerView.ItemDecoration {    private static final int[] ATTRS = new int[]{            android.R.attr.listDivider    };    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;    private Drawable mDivider;    private int mOrientation;    public DividerItemDecoration(Context context, int orientation) {        final TypedArray a = context.obtainStyledAttributes(ATTRS);        mDivider = a.getDrawable(0);        a.recycle();        setOrientation(orientation);    }    public void setOrientation(int orientation) {        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {            throw new IllegalArgumentException("invalid orientation");        }        mOrientation = orientation;    }    @Override    public void onDraw(Canvas c, RecyclerView parent) {        if (mOrientation == VERTICAL_LIST) {            drawVertical(c, parent);        } else {            drawHorizontal(c, parent);        }    }    public void drawVertical(Canvas c, RecyclerView parent) {        final int left = parent.getPaddingLeft();        final int right = parent.getWidth() - parent.getPaddingRight();        final int childCount = parent.getChildCount();        for (int i = 0; i < childCount; i++) {            final View child = parent.getChildAt(i);            RecyclerView v = new RecyclerView(parent.getContext());            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child                    .getLayoutParams();            final int top = child.getBottom() + params.bottomMargin;            final int bottom = top + mDivider.getIntrinsicHeight();            mDivider.setBounds(left, top, right, bottom);            mDivider.draw(c);        }    }    public void drawHorizontal(Canvas c, RecyclerView parent) {        final int top = parent.getPaddingTop();        final int bottom = parent.getHeight() - parent.getPaddingBottom();        final int childCount = parent.getChildCount();        for (int i = 0; i < childCount; i++) {            final View child = parent.getChildAt(i);            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child                    .getLayoutParams();            final int left = child.getRight() + params.rightMargin;            final int right = left + mDivider.getIntrinsicHeight();            mDivider.setBounds(left, top, right, bottom);            mDivider.draw(c);        }    }    @Override    public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {        if (mOrientation == VERTICAL_LIST) {            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());        } else {            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);        }    }    }

//使用的时候:分别写两次就可以。

recy.addItemDecoration(new DividerItemDecoration(this     ,DividerItemDecoration.HORIZONTAL_LIST )); recy.addItemDecoration(new DividerItemDecoration(this         ,DividerItemDecoration.VERTICAL_LIST ));

0 0
原创粉丝点击