java - Change text in recycleview with custom font -
i change font of 'item' in recycleview custom font. can me this? manage change font header using
header_title = (textview) itemview.findviewbyid(r.id.header_title); and
typeface face_01 = typeface.createfromasset(itemview.getcontext().getassets(), "customfont/grb.otf"); header_title.settypeface(face_01); but have no idea how item in arraylist.
here java code adapter:-
public class expandablelistadapter extends recyclerview.adapter<recyclerview.viewholder> { public static final int header = 0; public static final int child = 1; private list<item> data; public expandablelistadapter(list<item> data) { this.data = data; } @override public recyclerview.viewholder oncreateviewholder(viewgroup parent, int type) { view view = null; context context = parent.getcontext(); float dp = context.getresources().getdisplaymetrics().density; int subitempaddingleft = (int) (18 * dp); int subitempaddingtopandbottom = (int) (5 * dp); switch (type) { case header: layoutinflater inflater = (layoutinflater) parent.getcontext().getsystemservice(context.layout_inflater_service); view = inflater.inflate(r.layout.list_header, parent, false); listheaderviewholder header = new listheaderviewholder(view); return header; case child: textview itemtextview = new textview(context); itemtextview.setpadding(subitempaddingleft, subitempaddingtopandbottom, 0, subitempaddingtopandbottom); itemtextview.settextcolor(0x88000000); itemtextview.setlayoutparams( new viewgroup.layoutparams( viewgroup.layoutparams.match_parent, viewgroup.layoutparams.wrap_content)); return new recyclerview.viewholder(itemtextview) { }; } return null; } public void onbindviewholder(recyclerview.viewholder holder, int position) { final item item = data.get(position); switch (item.type) { case header: final listheaderviewholder itemcontroller = (listheaderviewholder) holder; itemcontroller.refferalitem = item; itemcontroller.header_title.settext(item.text); if (item.invisiblechildren == null) { itemcontroller.btn_expand_toggle.setimageresource(r.drawable.circle_minus); } else { itemcontroller.btn_expand_toggle.setimageresource(r.drawable.circle_plus); } itemcontroller.btn_expand_toggle.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (item.invisiblechildren == null) { item.invisiblechildren = new arraylist<item>(); int count = 0; int pos = data.indexof(itemcontroller.refferalitem); while (data.size() > pos + 1 && data.get(pos + 1).type == child) { item.invisiblechildren.add(data.remove(pos + 1)); count++; } notifyitemrangeremoved(pos + 1, count); itemcontroller.btn_expand_toggle.setimageresource(r.drawable.circle_plus); } else { int pos = data.indexof(itemcontroller.refferalitem); int index = pos + 1; (item : item.invisiblechildren) { data.add(index, i); index++; } notifyitemrangeinserted(pos + 1, index - pos - 1); itemcontroller.btn_expand_toggle.setimageresource(r.drawable.circle_minus); item.invisiblechildren = null; } } }); break; case child: textview itemtextview = (textview) holder.itemview; itemtextview.settext(data.get(position).text); break; } } @override public int getitemviewtype(int position) { return data.get(position).type; } @override public int getitemcount() { return data.size(); } private static class listheaderviewholder extends recyclerview.viewholder { public textview header_title; public imageview btn_expand_toggle; public item refferalitem; public listheaderviewholder(view itemview) { super(itemview); header_title = (textview) itemview.findviewbyid(r.id.header_title); btn_expand_toggle = (imageview) itemview.findviewbyid(r.id.btn_expand_toggle); typeface face_01 = typeface.createfromasset(itemview.getcontext().getassets(), "customfont/grb.otf"); header_title.settypeface(face_01); } } public static class item { public int type; public string text; public list<item> invisiblechildren; public item() { } public item(int type, string text) { this.type = type; this.text = text; } } }
gloabally define fontpath , typeface
typeface typeface; string fontpath = "fonts/kaushanscript-regular.otf"; in constructor following
public expandablelistadapter(context context,list<item> data) { typeface = typeface.createfromasset(context.getassets(), fontpath); this.data = data; } in bindviewholder
holder.itemtextview.settypeface(typeface);
Comments
Post a Comment