RecycleView 单击和长按事件以及美女画廊的使用场景

说起Recycleview真的是太强大了,动画,瀑布流效果

这里写图片描述

这里写图片描述
废话不多说先看下简单的效果A-Z显示在TextView中

这里写图片描述

而且由此也可以看出需要两个布局一个装载RecycleView一个是A-z显示的位置需要TextView

如何实现A-z字母显示的recycleview首先需要一个集合里面放简单的String类型

  private List<String> mData;

首先大家都知道要想实现这个肯定用循环 从A开始然后小于等于z然后之后将集合里面的数据添加进来代码如下

private void initData() {
        mData=new ArrayList<String>();
        //遍历A-z
        for(int i='A';i<='z';i++){
        //因为这里是char类型需要强制类型转换
            mData.add(""+(char)i);
        }
    }

然后需要一个适配器去替代listview这里不要导错包

public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.MyViewHolder>

然后MyViewHolder集成RecycleView中的ViewHolder

 class MyViewHolder extends RecyclerView.ViewHolder{
        TextView id_tv;

        public MyViewHolder(View itemView) {
            super(itemView);
            id_tv= (TextView) itemView.findViewById(R.id.tv_textview);
            //初始化textview
//            id_tv= (TextView) itemView.findViewById(R.id.id_tv);
        }
    }

然后重写以下几个方法

 @Override
    public SimpleAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    //子view实现与适配器的绑定以及监听都在这里 类似于listview中getView方法
     public void onBindViewHolder(final MyViewHolder holder, int position)

   //返回size大小
  @Override
    public int getItemCount()

下面看下具体代码

 @Override
    public SimpleAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //加载一个子布局
        View view=mLayoutInflater.inflate(R.layout.item_textview, parent,false);
        //创建MyHolder实例并返回holder 

        MyViewHolder holder=new MyViewHolder(view); //这里是view不是ViewGroup大家注意否则会报空指针异常
        return holder;
    }

textview绑定适配器获取每一个position位置

 public void onBindViewHolder(final MyViewHolder holder, int position) {
        holder.id_tv.setText(mData.get(position));

        }

返回size大小

 @Override
    public int getItemCount() {
        return mData.size();
    }

最后看下构造方法

 public SimpleAdapter(Context context, List<String> mData){
        this.mContext=context;
        this.mData=mData;
        mLayoutInflater=LayoutInflater.from(context);
    }

以及声明变量

     //上下文对象
    private Context mContext
    //集合数据
    private List<String> mData=new ArrayList<String>();
    //布局加载器
    private LayoutInflater mLayoutInflater;

最后在Activity中调用

        initView();
        initData();
        adapter=new SimpleAdapter(RecycleViewActivity.this,mData);
        //将recycleview与apdater绑定
        recyclerView.setAdapter(adapter);
        //线性布局管理器 recycler主要分为三种布局管理器 LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager流式布局管理器当然也可以改成垂直方向,LinearLayoutManager.VERTICAL
        LinearLayoutManager llm=new LinearLayoutManager(RecycleViewActivity.this,LinearLayoutManager.HORIZONTAL,false);
        recyclerView.setLayoutManager(llm);
 private void initView() {
        recyclerView= (RecyclerView) findViewById(R.id.id_recyclview);
    }
private void initData() {
        mData=new ArrayList<String>();
        for(int i='A';i<='z';i++){
            mData.add(""+(char)i);
        }
    }

下面看瀑布流效果以及单击添加item长按删除item

回调接口

private  onItemClickListener listener;
public interface onItemClickListener{
        void onItemClick(View v,int position);
        void onItemLongClick(View v,int position);


    }
    public void setOnItemClickListener(onItemClickListener listener){
        this.listener=listener;

    }

添加一个item方法

 public void addData(int position){
        mData.add(position,"add One Item");
        notifyItemInserted(position);
    }

移除一个item方法

 public void removeData(int position){
        mData.remove(position);
        notifyItemRemoved(position);
        //notifyItemMoved(position,position+1);
    }

回调在onBIndViewHolder实现单击或者长按事件

public void onBindViewHolder(final MyViewHolder holder, int position) {
        holder.id_tv.setText(mData.get(position));
        //如果设置了回调则设置点击事件
        if(listener!=null){
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position=holder.getLayoutPosition();
                    listener.onItemClick(holder.itemView,position);
                   // Toast.makeText(mContext,"你单击了item",Toast.LENGTH_LONG).show();
                }
            });
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    int position=holder.getLayoutPosition();
                    listener.onItemLongClick(holder.itemView,position);
                    //Toast.makeText(mContext,"你长按了item",Toast.LENGTH_LONG).show();
                    return false;
                }
            });
        }

    }

主Activity调用

   adapter.setOnItemClickListener(new SimpleAdapter.onItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                Toast.makeText(RecycleViewActivity.this, " click add item"+position,
                        Toast.LENGTH_SHORT).show();
                adapter.addData(position);
            }
            @Override
            public void onItemLongClick(View v, int position) {
                Toast.makeText(RecycleViewActivity.this, "  long click  delete"+position,
                        Toast.LENGTH_SHORT).show();
                adapter.removeData(position);

            }
        });

最后贴上全部代码RecycleActivity

package zm.jc.com.bmobsys;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import zm.jc.com.bmobsys.adapter.SimpleAdapter;
import zm.jc.com.bmobsys.view.DividerGridItemDecoration;
import zm.jc.com.bmobsys.view.MySharePop;

/**
 * Created by John on 2017/1/16.
 */

public class RecycleViewActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private List<String> mData;
    private SimpleAdapter adapter;
    private MySharePop sharePop;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycleview);
        initView();
        initData();
        adapter=new SimpleAdapter(RecycleViewActivity.this,mData);
        recyclerView.setAdapter(adapter);
        //StaggeredGridLayoutManager sgm=new StaggeredGridLayoutManager(1,3);
       // LinearLayoutManager llm=new LinearLayoutManager(RecycleViewActivity.this,LinearLayoutManager.HORIZONTAL,false);
        //recyclerView.setLayoutManager(llm);
        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));
        recyclerView.addItemDecoration(new DividerGridItemDecoration(RecycleViewActivity.this));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        adapter.setOnItemClickListener(new SimpleAdapter.onItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                Toast.makeText(RecycleViewActivity.this, " click add item"+position,
                        Toast.LENGTH_SHORT).show();
                adapter.addData(position);
            }
            @Override
            public void onItemLongClick(View v, int position) {
                Toast.makeText(RecycleViewActivity.this, "  long click  delete"+position,
                        Toast.LENGTH_SHORT).show();
                adapter.removeData(position);

            }
        });
       //
        // .srecyclerView.addItemDecoration(new DividerItemDecoration(RecycleViewActivity.this,DividerItemDecoration.VERTICAL_LIST));
        // StaggeredGridLayoutManager sgm=new StaggeredGridLayoutManager(RecycleViewActivity.this,LinearLayoutManager.VERTICAL,false);



    }

    private void initData() {
        mData=new ArrayList<String>();
        for(int i='A';i<='z';i++){
            mData.add(""+(char)i);
        }
    }

    private void initView() {
        recyclerView= (RecyclerView) findViewById(R.id.id_recyclview);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
//        setIconEnable(menu, true);
//        MenuItem menu1=menu.add(0,1,0,"添加");
//        menu1.setIcon(R.mipmap.add);
//
//        MenuItem menu2=menu.add(0,1,0,"删除");
//        menu2.setIcon(R.mipmap.add);
        return super.onCreateOptionsMenu(menu);
    }
    //enable为true时,菜单添加图标有效,enable为false时无效。4.0系统默认无效
      private void setIconEnable(Menu menu, boolean enable)
     {
             try
              {
            Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
                   Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
                     m.setAccessible(true);

                        //MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
                        m.invoke(menu, enable);

                   } catch (Exception e)
              {
                       e.printStackTrace();
                     }
           }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId())
        {  //添加
            case R.id.action_add:
                adapter.addData(1);
//                if(sharePop==null){
//                    OnClickLintener onClickLintener=new OnClickLintener();
//                    sharePop=new MySharePop(RecycleViewActivity.this,onClickLintener, DensityUtils.dp2px(this,160),DensityUtils.dp2px(this,160));
//                    //监听窗口焦点事件点击窗口外面取消显示
//                    sharePop.getContentView().setOnFocusChangeListener(new View.OnFocusChangeListener() {
//                        @Override
//                        public void onFocusChange(View v, boolean hasFocus) {
//                            if(!hasFocus){
//                                sharePop.dismiss();
//                            }
//                        }
//                    });
//
//                }
//                //设置默认焦点
//                sharePop.setFocusable(true);
//                //以某个控件的x和y的偏移量位置开始显示窗口
//                //sharePop.showAsDropDown(,0,0);
//                //如果窗口存在,则更新
//                sharePop.update();
                break;
            //删除
            case R.id.action_delete:
            adapter.removeData(1);
                break;
        }
        return true;
    }
//    class OnClickLintener implements View.OnClickListener {
//
//        @Override
//        public void onClick(View v) {
//            switch (v.getId()) {
//                case R.id.layout_add:
//
//                    break;
//                case R.id.layout_delete:
//
//                    break;
//
//                default:
//                    break;
//            }

        }



添加分割线代码

package zm.jc.com.bmobsys.view;

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.util.Log;
import android.view.View;

/**
 * Created by John on 2017/1/16.
 */

public class DividerItemDecoration  extends RecyclerView.ItemDecoration {
    private static final String TAG = "DividerItemDecoration";
    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) {
        Log.d(TAG, "onDraw() returned: " );

        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);
            android.support.v7.widget.RecyclerView v = new android.support.v7.widget.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);
        }
    }
}

网格分割线代码

package zm.jc.com.bmobsys.view;

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.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;

/**
 * Created by John on 2017/1/16.
 */

public class DividerGridItemDecoration extends RecyclerView.ItemDecoration {
    private static final int[] ATTRS = new int[] { android.R.attr.listDivider };
    private Drawable mDivider;

    public DividerGridItemDecoration(Context context)
    {
        final TypedArray a = context.obtainStyledAttributes(ATTRS);
        mDivider = a.getDrawable(0);
        a.recycle();
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state)
    {

        drawHorizontal(c, parent);
        drawVertical(c, parent);

    }

    private int getSpanCount(RecyclerView parent)
    {
        // 列数
        int spanCount = -1;
        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
        if (layoutManager instanceof GridLayoutManager)
        {

            spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
        } else if (layoutManager instanceof StaggeredGridLayoutManager)
        {
            spanCount = ((StaggeredGridLayoutManager) layoutManager)
                    .getSpanCount();
        }
        return spanCount;
    }

    public void drawHorizontal(Canvas c, RecyclerView parent)
    {
        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.getLeft() - params.leftMargin;
            final int right = child.getRight() + params.rightMargin
                    + mDivider.getIntrinsicWidth();
            final int top = child.getBottom() + params.bottomMargin;
            final int bottom = top + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }

    public void drawVertical(Canvas c, RecyclerView parent)
    {
        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 top = child.getTop() - params.topMargin;
            final int bottom = child.getBottom() + params.bottomMargin;
            final int left = child.getRight() + params.rightMargin;
            final int right = left + mDivider.getIntrinsicWidth();

            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }

    private boolean isLastColum(RecyclerView parent, int pos, int spanCount,
                                int childCount)
    {
        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
        if (layoutManager instanceof GridLayoutManager)
        {
            if ((pos + 1) % spanCount == 0)// 如果是最后一列,则不需要绘制右边
            {
                return true;
            }
        } else if (layoutManager instanceof StaggeredGridLayoutManager)
        {
            int orientation = ((StaggeredGridLayoutManager) layoutManager)
                    .getOrientation();
            if (orientation == StaggeredGridLayoutManager.VERTICAL)
            {
                if ((pos + 1) % spanCount == 0)// 如果是最后一列,则不需要绘制右边
                {
                    return true;
                }
            } else
            {
                childCount = childCount - childCount % spanCount;
                if (pos >= childCount)// 如果是最后一列,则不需要绘制右边
                    return true;
            }
        }
        return false;
    }

    private boolean isLastRaw(RecyclerView parent, int pos, int spanCount,
                              int childCount)
    {
        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
        if (layoutManager instanceof GridLayoutManager)
        {
            childCount = childCount - childCount % spanCount;
            if (pos >= childCount)// 如果是最后一行,则不需要绘制底部
                return true;
        } else if (layoutManager instanceof StaggeredGridLayoutManager)
        {
            int orientation = ((StaggeredGridLayoutManager) layoutManager)
                    .getOrientation();
            // StaggeredGridLayoutManager 且纵向滚动
            if (orientation == StaggeredGridLayoutManager.VERTICAL)
            {
                childCount = childCount - childCount % spanCount;
                // 如果是最后一行,则不需要绘制底部
                if (pos >= childCount)
                    return true;
            } else
            // StaggeredGridLayoutManager 且横向滚动
            {
                // 如果是最后一行,则不需要绘制底部
                if ((pos + 1) % spanCount == 0)
                {
                    return true;
                }
            }
        }
        return false;
    }

    @Override
    public void getItemOffsets(Rect outRect, int itemPosition,
                               RecyclerView parent)
    {
        int spanCount = getSpanCount(parent);
        int childCount = parent.getAdapter().getItemCount();
        if (isLastRaw(parent, itemPosition, spanCount, childCount))// 如果是最后一行,则不需要绘制底部
        {
            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
        } else if (isLastColum(parent, itemPosition, spanCount, childCount))// 如果是最后一列,则不需要绘制右边
        {
            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
        } else
        {
            outRect.set(0, 0, mDivider.getIntrinsicWidth(),
                    mDivider.getIntrinsicHeight());
        }
    }
}

布局文件activity_recycleview

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/id_recyclview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
    <zm.jc.com.bmobsys.view.MyTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:typeface="sans"
        android:gravity="center"
        android:text="你是在干嘛"/>

</RelativeLayout>

子itemview item_textview.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@color/colorAccent"
    android:layout_height="72dp">
    <TextView
        android:id="@+id/tv_textview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="哈哈"
        android:gravity="center"/>

</FrameLayout>

美女画廊效果

这里写图片描述
全部代码

package zm.jc.com.bmobsys;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

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

import zm.jc.com.bmobsys.adapter.GalleryAdapter;
import zm.jc.com.bmobsys.view.CopyRecyview;

/**
 * Created by John on 2017/1/16.
 */

public class GalleryActivity extends AppCompatActivity {
    GalleryAdapter adapter;
    private int[] resId={R.mipmap.add_1,R.mipmap.add_2,
            R.mipmap.add_3,
            R.mipmap.add_4,
            R.mipmap.add_5

    };
    private ImageView mImg;
    private List<Integer> mData;
    private RecyclerView recyclerView2;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycleview2);
        mImg = (ImageView) findViewById(R.id.id_content);
        recyclerView2= (CopyRecyview) findViewById(R.id.id_recyclview2);
        initData();


        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView2.setLayoutManager(linearLayoutManager);
        adapter=new GalleryAdapter(GalleryActivity.this,mData);
        adapter.setOnItemClickListener(new GalleryAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                Toast.makeText(GalleryActivity.this,"点击增加一张"+position,Toast.LENGTH_LONG).show();
                //mImg.setImageResource(mData.get(position));
                adapter.addImageData(position);
                //adapter.notifyItemInserted(position);
            }
        });
        recyclerView2.setAdapter(adapter);
        // LinearLayoutManager llm=new LinearLayoutManager(GalleryActivity.this,3);
    }
    private  void initData(){

        mData = new ArrayList<Integer>(Arrays.asList(R.mipmap.add_1,R.mipmap.add_2,
                R.mipmap.add_3,
                R.mipmap.add_4,
                R.mipmap.add_5));
    }
}

GalleryAdapter

package zm.jc.com.bmobsys.adapter;

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

import java.util.List;

import zm.jc.com.bmobsys.R;

/**
 * Created by John on 2017/1/16.
 */

public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.GalleryViewHolder> {
    private Context mContext;
    private LayoutInflater mLayoutInflater;
    private OnItemClickListener listener;
    private List<Integer> mData;

    public interface OnItemClickListener{
        void onItemClick(View v,int position);
    }
    public void setOnItemClickListener( OnItemClickListener listener){
        this.listener=listener;
    }
    private int[] resId={R.mipmap.add_1,R.mipmap.add_2,
            R.mipmap.add_3,
            R.mipmap.add_4,
            R.mipmap.add_5

    };
    public GalleryAdapter(Context context,int[] resId){
        this.mContext=context;
        this.resId=resId;
        mLayoutInflater=LayoutInflater.from(context);
    } public GalleryAdapter(Context context,List<Integer> mData){
        this.mContext=context;
        this.mData=mData;
        //this.resId=resId;
        mLayoutInflater=LayoutInflater.from(context);
    }

    @Override
    public GalleryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=mLayoutInflater.inflate(R.layout.item_gallery,parent,false);
        GalleryViewHolder galleryViewHolder=new GalleryViewHolder(view);
        return galleryViewHolder;
    }

    @Override
    public void onBindViewHolder(final GalleryViewHolder holder, final int position) {
        holder.imageView.setImageResource(mData.get(position));
        //回调
        if(listener!=null){
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onItemClick(holder.itemView,position);
                }
            });
//            int pos=holder.getLayoutPosition();
//            listener.onItemClick(holder.imageView,pos);
        }

    }

    @Override
    public int getItemCount() {
        //resId.length;
        return mData.size();
    }
    public class  GalleryViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        //TextView tv_gallery;

        public GalleryViewHolder(View itemView) {
            super(itemView);
            imageView= (ImageView) itemView.findViewById(R.id.iv_gallery);
        }
    }
    public void addImageData(int position){
        mData.add(position,mData.get(position));
        notifyItemInserted(position);
    }
}

不啰嗦!
转载请注明出处,http://blog.csdn.net/qq_15950325/article/details/54582340同时希望老司机加群一起开车!
疯狂Android进阶之旅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值