android - Convert RecyclerView items to CardView on click -


i want change recyclerview items cardview few buttons(that i'll myself). don't understand how convert cardview on click.

here's code: mainactivity.java

public class mainactivity extends appcompatactivity {  recyclerview recyclerview; rvadapter rvadapter; @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     recyclerview = (recyclerview) findviewbyid(r.id.list);     rvadapter = new rvadapter(getapplicationcontext(), getdata());     recyclerview.setadapter(rvadapter);     recyclerview.setlayoutmanager(new linearlayoutmanager(getapplicationcontext())); }  private list<rvdata> getdata() {     list<rvdata> data = new arraylist<>();     string [] titles = {"dummy text1", "dummy text2", "dummy text3"};     (int = 0; < titles.length; i++){         rvdata current = new rvdata();         current.title = titles[i];         data.add(current);     }     return data; } 

rvadapter.java

public class rvadapter extends recyclerview.adapter<rvadapter.rvadapterholder> {  private layoutinflater inflater; private list<rvdata> data; context context;  public rvadapter(context context, list<rvdata> mdata) {     this.context = context;     inflater = layoutinflater.from(context);     data = mdata; }  @override public rvadapterholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = inflater.inflate(r.layout.rv_row, parent, false);     rvadapterholder rvadapterholder = new rvadapterholder(view);     return rvadapterholder; }  @override public void onbindviewholder(rvadapterholder holder, int position) {     rvdata rvdata = data.get(position);     holder.textview.settext(rvdata.title); }  @override public int getitemcount() {     return data.size(); }  public class rvadapterholder extends recyclerview.viewholder {     textview textview;     public rvadapterholder(view itemview) {         super(itemview);         textview = (textview) itemview.findviewbyid(r.id.title);     } } } 

rvdata.java

public class rvdata {     public string title; } 

activity_main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"     android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin"     android:paddingright="@dimen/activity_horizontal_margin"     android:paddingtop="@dimen/activity_vertical_margin"     android:paddingbottom="@dimen/activity_vertical_margin"        tools:context=".mainactivity">      <android.support.v7.widget.recyclerview         android:id="@+id/list"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:cliptopadding="false"         android:fadescrollbars="true"         android:paddingbottom="80dp"         android:scrollbars="vertical" />  </relativelayout> 

rv_row.xml

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical" android:layout_width="match_parent"     android:layout_height="match_parent">      <textview         android:id="@+id/title"         android:layout_width="wrap_content"         android:layout_height="48dp"         android:textcolor="@color/black"         android:text="@string/dummy_title" /> </linearlayout> 

rv_card_row.xml

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical" android:layout_width="match_parent"     android:layout_height="match_parent">      <android.support.v7.widget.cardview         xmlns:card_view="http://schemas.android.com/apk/res-auto"         android:id="@+id/card_view"         android:layout_gravity="center"         android:layout_width="fill_parent"         android:layout_height="match_parent"         card_view:cardcornerradius="2dp"         card_view:cardbackgroundcolor="@android:color/white"         card_view:cardelevation="2.5dp"         card_view:cardpreventcorneroverlap="true"         card_view:cardusecompatpadding="true"/>  </linearlayout> 

place both layouts single 1 , change visibility of card when clicked. try this

<?xml version="1.0" encoding="utf-8"?> <framelayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="56dp">      <android.support.v7.widget.cardview         xmlns:card_view="http://schemas.android.com/apk/res-auto"         android:id="@+id/card_view"         android:layout_gravity="center"         android:layout_width="match_parent"         android:layout_height="match_parent"         card_view:cardcornerradius="2dp"         card_view:cardbackgroundcolor="@android:color/white"         card_view:cardelevation="2.5dp"         card_view:cardpreventcorneroverlap="true"         card_view:cardusecompatpadding="true"         android:visibility="invisible" /> <!-- -->      <textview         android:id="@+id/title"         android:layout_width="wrap_content"         android:layout_height="48dp"         android:layout_gravity="center_vertical"         android:textcolor="@color/black"         android:text="@string/dummy_title" /> </framelayout> 

Comments