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 ));