RecyclerView的基本用法

来源:互联网 发布:论坛源码3.4 编辑:程序博客网 时间:2024/05/17 23:46
//1、设置布局管理器,这里面的参数是RecylerView.LayoutManger(布局管理器的意思),但是这个是一个抽象类,只能new其子类

 //他的子类有三个:StaggeredGridLayoutManger 瀑布流布局管理器;LinearLayoutManager 线性布局管理器;GridLayoutManager 布局管理器


   main_rcv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));

  再设置adapter

2、recyclerview的apdapter是继承自extends RecyclerView.Adapter,并且他的点击事件还要自己重写

例如:

public class ProductListAdapter extends RecyclerView.Adapter {
    private Context context;


    public void setProductList(List<HotProductListBean.ProductListBean> productList) {
        this.productList = productList;
    }


    private List<HotProductListBean.ProductListBean> productList;
    public ProductListAdapter(Context context, List<HotProductListBean.ProductListBean> productList) {
        this.context = context;
        this.productList = productList;
    }


    private ProductListItemLongClickListener  mlongClickListener;
    private ProductListItemClickListener mClickListener;
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        ProductListHolder holder = new ProductListHolder(View.inflate(context, R.layout.item_productlist, null),mlongClickListener,mClickListener);
        return holder;
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
        HotProductListBean.ProductListBean productListBean = productList.get(i);
        ProductListHolder holder = (ProductListHolder) viewHolder;
        Glide.with(context).load(SPConstants.HOMEURL+productListBean.getPic()).placeholder(R.mipmap.ic_launcher)
                .error(R.mipmap.ic_launcher).into(holder.iv);


        holder.desc_top.setText(productListBean.getName());
        holder.desc_bottom.setText("市场价"+productListBean.getMarketPrice());
        holder.pri.setText(productListBean.getPrice()+"");
    }


    @Override
    public int getItemCount() {
        return productList == null ? 0 : productList.size();
    }


   public class ProductListHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
        private ImageView iv;
        private TextView desc_top;
        private TextView desc_bottom;
        private TextView pri;
       private ProductListItemLongClickListener  longClickListener;
       private ProductListItemClickListener clickListener;


        public ProductListHolder(View itemView, ProductListItemLongClickListener productListItemLongClickListener,
                                 ProductListItemClickListener productListItemClickListener) {
            super(itemView);
            iv = (ImageView) itemView.findViewById(R.id.product_detail_vp);
            desc_top = (TextView) itemView.findViewById(R.id.item_productlist_dsc_top);
            desc_bottom = (TextView) itemView.findViewById(R.id.item_productlist_dsc_bottom);
            pri = (TextView) itemView.findViewById(R.id.item_productlist_pri);




            longClickListener = productListItemLongClickListener;
            clickListener = productListItemClickListener;


            itemView.setOnClickListener(this);
            itemView.setOnLongClickListener(this);
        }


        @Override
        public void onClick(View v) {
            Log.i("test","点击事件为空");
        if (clickListener != null){
            Log.i("test","点击事件不为空");
            clickListener.onItemClick(v,getPosition());
        }
        }


        @Override
        public boolean onLongClick(View v) {
            Log.i("test","长按事件为空");
            if (longClickListener != null){
                Log.i("test","长按事件不为空");
                longClickListener.onItemLongClick(v,getPosition());
            }
            return true;
        }
    }


    public interface ProductListItemLongClickListener {
        void onItemLongClick(View view, int position);
    }


    public interface ProductListItemClickListener {
        void onItemClick(View view, int position);
    }


    public void setOnItemLongClickListener(ProductListItemLongClickListener productListItemLongClickListener){
        mlongClickListener = productListItemLongClickListener;
    }
    public void setOnItemClickListener(ProductListItemClickListener productListItemClickListener){
        mClickListener = productListItemClickListener;
    }
}

0 0
原创粉丝点击