Package Zhangphil.myrecyclerview;import Android.support.v7.app.actionbaractivity;import Android.support.v7.widget.linearlayoutmanager;import Android.support.v7.widget.recyclerview;import Android.support.v7.widget.recyclerview.viewholder;import Android.view.gravity;import Android.view.View;import Android.view.viewgroup;import Android.widget.linearlayout;import Android.widget.textview;import Android.widget.toast;import android.os.bundle;/* * Android Recyclerview Click event * * * Android latest Recyclerview no like before Android L Istview has already provided a callback event such as Onitemclicklistener () in response to user clicks. * If you want to implement a ListView-like onitemclicklistener, we need to write our own code implementation. There are many ideas and solutions to achieve. * The solution to this case is this: * 1th step: Write yourself a public interface Onrecyclerviewitemclicklistener, this interface is used for callback responses. The user's Click event. * 2nd step: Put Onrecyclerviewitemclicklistener new out, is actually complete the interface method inside: Onrecyclerviewitemclicklistener (). We will complete a ListView-like Onitemclicklistener () in the Onrecyclerviewitemclicklistener method body. * 3rd step, key point. Here, a solution that implements the Recyclerview click Response callback has multiple choices and paths, and this case chooses to add a click event to the parameter view in the Viewholder constructor: * Public MyViewHolder (View Itemview) {super (Itemview); Itemview.setonclicklistener (new View.onclicklistener () {@Override public void OnClick (View v) {_click (v);}}); Then we write an extra: _click (View v) and then call _click (v) to trigger the Onrecyclerviewitemclicklistener (Note: More parameters can be carried and passed in this process depending on the requirements): _click ( View v) {Monrecyclerviewitemclicklistener.onrecyclerviewitemclicklistener (this, V, POS); The ability to increase click Response time for Recyclerview is completed. * * * by Phil * * */public class Mainactivity extends Actionbaractivity {//Add Click event Interface part 1private ONRECYCLERVIEWITEMCL Icklistener Monrecyclerviewitemclicklistener = new Onrecyclerviewitemclicklistener () {//Specific click events in this @overridepublic void Onrecyclerviewitemclicklistener (Viewholder holder,view View, int pos) {toast.maketext (Getapplication (), pos + "", Toast.length_short). Show ();}}; Public interface Onrecyclerviewitemclicklistener {public void Onrecyclerviewitemclicklistener (Viewholder holder,view view, int pos);} Private Recyclerview The data set entry for the mrecyclerview;//test. Private final int SIZE =: @OverrideproteCTED void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview (r.layout.activity _main); Mrecyclerview = (Recyclerview) Findviewbyid (R.id.my_recycler_view); Linearlayoutmanager Mlayoutmanager = new Linearlayoutmanager (this);//orientation=linearlayout.horizontal, Horizontal " ListView ". VERTICAL, is the previous ListView style. Mlayoutmanager.setorientation (linearlayout.horizontal); Mrecyclerview.setlayoutmanager (MLayoutManager); Recyclerview.adapter madapter = new Myrecyclerviewadapter (); Mrecyclerview.setadapter (Madapter);} public class Myrecyclerviewadapter Extendsrecyclerview.adapter<myviewholder> {public myrecyclerviewadapter () { Super ();} @Overridepublic myviewholder Oncreateviewholder (viewgroup viewgroup, int i) {TextView TV = new TextView (Getapplication () ); Tv.setpadding (+, ten, ten); tv.setgravity (Gravity.center); Myviewholder holder = new Myviewholder (TV); holder.text = Tv;return holder;} @Overridepublic void Onbindviewholder (Myviewholder viewholder, int pos) {Viewholder. Text.settext ("POS:" + pos); viewholder.pos = pos;} @Overridepublic int GetItemCount () {return SIZE;}} Private class Myviewholder extends Recyclerview.viewholder {public TextView text;public int pos;public myviewholder (View Itemview) {super (Itemview); Itemview.setonclicklistener (new View.onclicklistener () {@Overridepublic void OnClick ( View v) {_click (v);}});} Add Click event Interface Part 2 to trigger the Click event. Private final void _click (View v) {Monrecyclerviewitemclicklistener.onrecyclerviewitemclicklistener (this, V, POS);}}}
Activity_main.xml
<?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http://schemas.android.com/apk/res/ Android " android:layout_width=" match_parent " android:layout_height=" match_parent " android:o rientation= "vertical" > <android.support.v7.widget.recyclerview android:id= "@+id/my_recycler_view " android:layout_width=" match_parent " android:layout_height=" Match_parent "/></linearlayout>
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Recyclerview Click events