1. 程式人生 > >在RecyclerView設定監聽事件

在RecyclerView設定監聽事件

1.為什麼在RecyclerView取消掉了Listview裡的OnItemClickListner事件,

簡單來說就是因為ListView裡的OnItemClickListner與OnClickListner

發生了衝突,OnItemClickListner無法解決多種多樣的事件,

所以在Recycerview裡面便去掉了OnitemClickListner的方法

2.如何給Recycerview新增監聽事件???

      一般可以想到的方法有兩種,關鍵的關鍵就是如何去獲取position,第一種方法就是在介面卡裡面getPosition(),但是這個getPosition()已經過時了,但還有一種方法,對外實現介面,下面就是這個封裝了的工具類的程式碼:

package com.example.com.mlsdome.Activity.Util;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
/**
 * Created by 12697 on 2017/3/19.
 */
public class RecyclerItemClickListener implements   
RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } GestureDetector mGestureDetector; public RecyclerItemClickListener(Context context, OnItemClickListener listener) { mListener
= listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildPosition(childView)); return true; } return false; } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } }

剩下的就簡單了

md_rView.addOnItemTouchListener(new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
    @Override
public void onItemClick(View view, int position)
    {

        switch (position)
        {
            case 0:
                Intent intent=new Intent(MatchDetailsActivity.this,WebViewActivity.class);
intent.putExtra("url","http://www.myexception.cn/mobile/1952989.html");
startActivity(intent);
                break;
}
    }
}));

OK,到這裡就完成了