android studio - Add EditText to Recycler -
i new android recyclerview , gives error while tried add edittext fields recycler.i cannot find how this. please solve issue , in advance :) :) mainactivity code:
public class mainactivity extends appcompatactivity{ private recyclerview mrecyclerview; private customrecycleradapter madapter; private recyclerview.layoutmanager mlayoutmanager; private edittext mtext; private edittext mcolor; private list<data> mdata = new arraylist<>(); @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // initializing views. mtext = (edittext) findviewbyid(r.id.textet); mrecyclerview = (recyclerview) findviewbyid(r.id.recycler); // if size of views not change data changes. mrecyclerview.sethasfixedsize(true); // setting layoutmanager. mlayoutmanager = new linearlayoutmanager(this); mrecyclerview.setlayoutmanager(mlayoutmanager); // setting adapter. madapter = new customrecycleradapter(); mrecyclerview.setadapter(madapter); } // called when add button clicked. public void additem(view view) { // add data locally list. data datatoadd = new data( mtext.gettext().tostring()); mdata.add(datatoadd);; // update adapter. madapter.additem(mdata.size() - 1, datatoadd); }
}
the customrecycleradapter
package com.example.niroj.jsonandsqlite; public class customrecycleradapter extends recyclerview.adapter<recyclerviewholder> { private list<data> mdata = collections.emptylist(); public customrecycleradapter() { // pass context or other static stuff needed. } public void updatelist(list<data> data) { mdata = data; notifydatasetchanged(); } @override public int getitemcount() { return mdata.size(); } @override public recyclerviewholder oncreateviewholder(viewgroup viewgroup, int position) { layoutinflater inflater = layoutinflater.from(viewgroup.getcontext()); view itemview = inflater.inflate(r.layout.list_item, viewgroup, false); return new recyclerviewholder(itemview); } @override public void onbindviewholder(recyclerviewholder viewholder, int position) { viewholder.title.settext(mdata.get(position).text); } public void additem(int position, data data) { mdata.add(position, data); notifyiteminserted(position); } public void removeitem(int position) { mdata.remove(position); notifyitemremoved(position); }
}
the data class have contains
public class data { public string text; public data(string text) { this.text = text; } public string gettext() { return text; } public void settext(string text) { this.text = text; }
}
what ? here code :-
this mainactivity.java
public class mainactivity extends appcompatactivity implements recyclerviewadapter.onitemclicklistener{ private recyclerview myrecyclerview; private linearlayoutmanager linearlayoutmanager; private recyclerviewadapter myrecyclerviewadapter; edittext namefield; button btnadd; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); myrecyclerview = (recyclerview)findviewbyid(r.id.myrecyclerview); linearlayoutmanager = new linearlayoutmanager(this, linearlayoutmanager.vertical, false); /* linearlayoutmanager = new linearlayoutmanager(this, linearlayoutmanager.horizontal, false); */ myrecyclerviewadapter = new recyclerviewadapter(this); myrecyclerviewadapter.setonitemclicklistener(this); myrecyclerview.setadapter(myrecyclerviewadapter); myrecyclerview.setlayoutmanager(linearlayoutmanager); namefield = (edittext)findviewbyid(r.id.namefield); btnadd = (button)findviewbyid(r.id.addbutton); btnadd.setonclicklistener(new view.onclicklistener(){ @override public void onclick(view v) { string newname = namefield.gettext().tostring(); if(!newname.equals("")){ if(myrecyclerviewadapter.getitemcount()>1){ myrecyclerviewadapter.add(1, newname); }else{ myrecyclerviewadapter.add(0, newname); } } } }); } @override public void onitemclick(recyclerviewadapter.itemholder item, int position) { toast.maketext(this, "remove " + position + " : " + item.getitemname(), toast.length_short).show(); myrecyclerviewadapter.remove(position); } }
this recyclerviewadapter.java
public class recyclerviewadapter extends recyclerview.adapter<recyclerviewadapter.itemholder> { private list<string> itemsname; private onitemclicklistener onitemclicklistener; private layoutinflater layoutinflater; public recyclerviewadapter(context context){ layoutinflater = layoutinflater.from(context); itemsname = new arraylist<string>(); } @override public recyclerviewadapter.itemholder oncreateviewholder(viewgroup parent, int viewtype) { view itemview = layoutinflater.inflate(r.layout.list_item, parent, false); return new itemholder(itemview, this); } @override public void onbindviewholder(recyclerviewadapter.itemholder holder, int position) { holder.setitemname(itemsname.get(position)); } @override public int getitemcount() { return itemsname.size(); } public void setonitemclicklistener(onitemclicklistener listener){ onitemclicklistener = listener; } public onitemclicklistener getonitemclicklistener(){ return onitemclicklistener; } public interface onitemclicklistener{ public void onitemclick(itemholder item, int position); } public void add(int location, string iname){ itemsname.add(location, iname); notifyiteminserted(location); } public void remove(int location){ if(location >= itemsname.size()) return; itemsname.remove(location); notifyitemremoved(location); } public static class itemholder extends recyclerview.viewholder implements view.onclicklistener{ private recyclerviewadapter parent; textview textitemname; public itemholder(view itemview, recyclerviewadapter parent) { super(itemview); itemview.setonclicklistener(this); this.parent = parent; textitemname = (textview) itemview.findviewbyid(r.id.item_name); } public void setitemname(charsequence name){ textitemname.settext(name); } public charsequence getitemname(){ return textitemname.gettext(); } @override public void onclick(view v) { final onitemclicklistener listener = parent.getonitemclicklistener(); if(listener != null){ listener.onitemclick(this, getposition()); } } } }
Comments
Post a Comment