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
Post a Comment