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進階之旅

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章