i have been reading google's material design , ran across new recyclerview android. have been following google's tutorial example slim , want more dynamic things recylerview , hoping explain how so.
this google's recyclerview adapter example
public class myadapter extends recyclerview.adapter<myadapter.viewholder> { private string[] mdataset; // provide reference views each data item // complex data items may need more 1 view per item, , // provide access views data item in view holder public static class viewholder extends recyclerview.viewholder { // each data item string in case public textview mtextview; public viewholder(textview v) { super(v); mtextview = v; } } // provide suitable constructor (depends on kind of dataset) public myadapter(string[] mydataset) { mdataset = mydataset; } // create new views (invoked layout manager) @override public myadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { // create new view view v = layoutinflater.from(parent.getcontext()) .inflate(r.layout.my_text_view, parent, false); // set view's size, margins, paddings , layout parameters ... viewholder vh = new viewholder((textview)v); return vh; } // replace contents of view (invoked layout manager) @override public void onbindviewholder(viewholder holder, int position) { // - element dataset @ position // - replace contents of view element holder.mtextview.settext(mdataset[position]); } // return size of dataset (invoked layout manager) @override public int getitemcount() { return mdataset.length; } }
i've implemented android app , worked layout use contains single textview.
can explain how can use example layout has multiple textviews?
for example:
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="?attr/listpreferreditemheight" android:gravity="center_vertical" android:paddingleft="8dp" android:paddingright="8dp"> <textview android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_margin="8dp"/> <textview android:id="@+id/text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_margin="8dp"/> </linearlayout>
how can access textview's separately , possibly change attributes linearlayout?
this have been following google tutorial google recyclerview
you can extract textviews using findviewbyid inflated linear layout.
public class myadapter extends recyclerview.adapter<myadapter.viewholder> { private string[] mdataset; public static class viewholder extends recyclerview.viewholder { public textview mtitle; public textview mtext public viewholder(linearlayout v) { super(v); mtitle = (textview) v.findviewbyid(r.id.title); mtext = (textview) v.findviewbyid(r.id.text); } } ..... // create new views (invoked layout manager) @override public myadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) { // create new view view v = layoutinflater.from(parent.getcontext()) .inflate(r.layout.my_text_view, parent, false); // set view's size, margins, paddings , layout parameters viewholder vh = new viewholder((linearlayout)v); return vh; } // replace contents of view (invoked layout manager) @override public void onbindviewholder(viewholder holder, int position) { holder.mtitle.settext(....); holder.mtext.settext(.....); } }