android - how to have variable row height in recyclerview -


i trying create recyclerview in nav drawer header showing profile information. have header height more other row elements. below header layout

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="200dp"     android:background="@color/green"     android:orientation="vertical"     android:weightsum="1">        <linearlayout         android:layout_width="match_parent"         android:layout_height="56dp"         android:orientation="vertical"         android:layout_alignparentbottom="true"         android:layout_alignparentleft="true"         android:layout_alignparentstart="true">          <textview             android:id="@+id/name"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginleft="16dp"             android:textcolor="#ffffff"             android:text="xxxxx"             android:textsize="32sp"             android:textstyle="bold"             />      </linearlayout>  </relativelayout> 

when set header of recycler view , 200dp height not reflecting in ui

 recyclerview.adapter<navdrawerlistviewholder> adapter = new navdrawerlistadapter(this,titles,this);         navlist.setadapter(adapter); 

below adapter recyclerview :

public class navdrawerlistadapter extends recyclerview.adapter<navdrawerlistviewholder> {      private static final int type_header = 0;     private static final int type_item = 1;     context mcontext;     string[] mcharacterlist;     ilistitemclicklistener mlistener;     int holderviewtype=0;      public navdrawerlistadapter(context context, string[] characters, ilistitemclicklistener clicklistener) {         mcontext = context;         mcharacterlist = characters;         mlistener = clicklistener;     }      @override     public navdrawerlistviewholder oncreateviewholder(viewgroup parent, int viewtype) {         navdrawerlistviewholder viewholder;         holderviewtype = viewtype;         if(viewtype == type_header) {             view v = layoutinflater.from(mcontext).inflate(r.layout.header,null);             viewholder = new navdrawerlistviewholder(v,type_header,mlistener);         } else  {             view v = layoutinflater.from(mcontext).inflate(r.layout.nav_item_row,null);             viewholder = new navdrawerlistviewholder(v,type_item,mlistener);         }          return viewholder;     }      @override     public void onbindviewholder(navdrawerlistviewholder holder, int position) {         if(holderviewtype == type_header) {             typeface typeface = typeface.createfromasset(mcontext.getassets(), "roboto-thin.ttf");             holder.name.settypeface(typeface);         } else {             holder.charactername.settext(mcharacterlist[position - 1]);         }      }      @override     public int getitemviewtype(int position) {         if (position == 0) {             return type_header;         }          return type_item;     }      @override     public int getitemcount() {         return mcharacterlist.length + 1;     } 

replace:

layoutinflater.from(mcontext).inflate(r.layout.header,null); 

with:

layoutinflater.from(mcontext).inflate(r.layout.header, parent, false); 

and same other inflate() calls. if know parent container layout being inflated, supply inflate() call. in particular, relativelayout needs this, if root view of layout being inflated.

also, consider using getlayoutinflater() on activity instead of layoutinflater.from(). may if pass activity from() equivalent results. however, in general, want use layoutinflater knows activity , theme, right results.


Comments

Popular posts from this blog

apache - PHP Soap issue while content length is larger -

asynchronous - Python asyncio task got bad yield -

javascript - Complete OpenIDConnect auth when requesting via Ajax -