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