java - How to add OnClickListner to CardView use with ListView -


i trying follow tutorial android working card view , recycler view. want attach onclicklistner each card. tried many answers available on stackoverflow, not working me.there part of code.

mainactivity.java

/**      * adding few albums testing      */     private void preparealbums() {         int[] covers = new int[]{                 r.drawable.album1,                 r.drawable.album2};          album = new album("附近警察局", covers[0]);         albumlist.add(a);          = new album("附近医院", covers[1]);         albumlist.add(a);          adapter.notifydatasetchanged();     }      /**      * recyclerview item decoration - give equal margin around grid item      */     public class gridspacingitemdecoration extends recyclerview.itemdecoration {          private int spancount;         private int spacing;         private boolean includeedge;          public gridspacingitemdecoration(int spancount, int spacing, boolean includeedge) {             this.spancount = spancount;             this.spacing = spacing;             this.includeedge = includeedge;         }          @override         public void getitemoffsets(rect outrect, view view, recyclerview parent, recyclerview.state state) {             int position = parent.getchildadapterposition(view); // item position             int column = position % spancount; // item column              if (includeedge) {                 outrect.left = spacing - column * spacing / spancount; // spacing - column * ((1f / spancount) * spacing)                 outrect.right = (column + 2) * spacing / spancount; // (column + 1) * ((1f / spancount) * spacing)                  if (position < spancount) { // top edge                     outrect.top = spacing;                 }                 outrect.bottom = spacing; // item bottom             } else {                 outrect.left = column * spacing / spancount; // column * ((1f / spancount) * spacing)                 outrect.right = spacing - (column + 2) * spacing / spancount; // spacing - (column + 1) * ((1f /    spancount) * spacing)                 if (position >= spancount) {                     outrect.top = spacing; // item top                 }             }         }     } 

albumsadapter.java

public class myviewholder extends recyclerview.viewholder {         public textview title, count;         public imageview thumbnail, overflow;          public myviewholder(view view) {             super(view);             title = (textview) view.findviewbyid(r.id.title);             thumbnail = (imageview) view.findviewbyid(r.id.thumbnail);         }     }       public albumsadapter(context mcontext, list<album> albumlist) {         this.mcontext = mcontext;         this.albumlist = albumlist;     }      @override     public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view itemview = layoutinflater.from(parent.getcontext())                 .inflate(r.layout.album_card, parent, false);          return new myviewholder(itemview);     }      @override     public void onbindviewholder(final myviewholder holder, int position) {         album album = albumlist.get(position);         holder.title.settext(album.getname());         //holder.count.settext(album.getnumofsongs() + " songs");          // loading album cover using glide library         glide.with(mcontext).load(album.getthumbnail()).into(holder.thumbnail);      } 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     android:id="@+id/main_content"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@android:color/white"     android:fitssystemwindows="true">      <android.support.design.widget.appbarlayout         android:id="@+id/appbar"         android:layout_width="match_parent"         android:layout_height="@dimen/detail_backdrop_height"         android:fitssystemwindows="true"         android:theme="@style/themeoverlay.appcompat.dark.actionbar">          <android.support.design.widget.collapsingtoolbarlayout             android:id="@+id/collapsing_toolbar"             android:layout_width="match_parent"             android:layout_height="match_parent"             android:fitssystemwindows="true"             app:contentscrim="?attr/colorprimary"             app:expandedtitlemarginend="64dp"             app:expandedtitlemarginstart="48dp"             app:expandedtitletextappearance="@android:color/transparent"             app:layout_scrollflags="scroll|exituntilcollapsed">              <relativelayout                 android:layout_width="wrap_content"                 android:layout_height="wrap_content">                  <imageview                     android:id="@+id/backdrop"                     android:layout_width="match_parent"                     android:layout_height="match_parent"                     android:fitssystemwindows="true"                     android:scaletype="centercrop"                     app:layout_collapsemode="parallax" />                  <linearlayout                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:layout_centerinparent="true"                     android:orientation="vertical"                     android:id="@+id/linearlayout">                    </linearlayout>                  <textview                     android:id="@+id/love_music"                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     android:paddingtop="@dimen/songs_count_padding_bottom"                     android:text="@string/backdrop_title"                     android:textcolor="@android:color/white"                     android:textsize="@dimen/backdrop_title"                     android:layout_centerhorizontal="true" />                  <imageview                     android:layout_width="wrap_content"                     android:layout_height="wrap_content"                     style="@style/cardcontent"                     android:src="@drawable/powered_by_google_dark"                     android:paddingbottom="@dimen/songs_count_padding_bottom"                     android:layout_below="@+id/love_music"                     android:layout_centerhorizontal="true" />               </relativelayout>              <android.support.v7.widget.toolbar                 android:id="@+id/toolbar"                 android:layout_width="match_parent"                 android:layout_height="?attr/actionbarsize"                 app:layout_collapsemode="pin"                 app:popuptheme="@style/themeoverlay.appcompat.light" />          </android.support.design.widget.collapsingtoolbarlayout>      </android.support.design.widget.appbarlayout>      <include layout="@layout/content_main" />  </android.support.design.widget.coordinatorlayout> 

content_main.xml

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@color/viewbg"     app:layout_behavior="@string/appbar_scrolling_view_behavior"     tools:context="info.androidhive.cardview.mainactivity"     tools:showin="@layout/activity_main">      <android.support.v7.widget.recyclerview         android:id="@+id/recycler_view"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:cliptopadding="false"         android:scrollbars="vertical" />  </relativelayout> 

initialize cardview in holder class

cardview cardview;

i.e

public class myviewholder extends recyclerview.viewholder {         public textview title, count;         public imageview thumbnail, overflow;         public cardview cardview;          public myviewholder(view view) {             super(view);             title = (textview) view.findviewbyid(r.id.title);             thumbnail = (imageview) view.findviewbyid(r.id.thumbnail);             cardview = (cardview) view.findviewbyid(r.id.cardview);         }     } 

and in adapter class access object , add listener

holder.cardview.setonclicklistener(new view.onclicklistener() {     @override     public void onclick(view v) {         // whatever want     } }); 

you need wrap row layout inside cardview

<android.support.v7.widget.cardview     android:id="@+id/cardview"     android:layout_width="match_parent"     android:layout_height="wrap_content"     app:cardcornerradius="3dp"     app:cardelevation="2dp"     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto">  // row layout  </android.support.v7.widget.cardview> 

Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -