java - Android - storing two arrays in a single RecyclerView -
i have 2 arrays :
private void initdata(){ list = new arraylist<string>(); list.add("element 1"); list.add("element 2"); list.add("element 3"); list.add("element 4"); list.add("element 5"); } private void initdata2(){ list2 = new arraylist<string>(); list.add("item 1"); list.add("item 2"); list.add("item 3"); list.add("item 4"); list.add("item 5"); }
what want achieve storing both lists in singler recyclerview in way list elements shown on left side of screen , items list shown in right side (like shown in picture below) using 2 listviews , willing convert single recyclerview ps. preferably maintain structure of arrays
edit / tutorial going use recyclerview tutorial
you can use pojo class this
public class dataholder { string item1,item2; public dataholder(){ } string getitem1(){ retrun item1; } string getitem2(){ retrun item2; } string setitem1(string item1){ this.item1 = item1; } string setitem2(string item2){ this.item2 = item2; } }
then create dataholder list.
arraylist<dataholder> bothitemdatalist =new arraylist<dataholder>();
add item this.
dataholder item = new dataholder (); item.setitem1("element 1"); item.setitem2("element 1"); bothitemdatalist.add(item);
update section:
mainactivity:
public class mainactivity extends appcompatactivity { private recyclerview mrecyclerview; public edittext search; // private list<string> list = new arraylist<string>(); private list<dataholder> list = new arraylist<dataholder>(); simpleadapter madapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); search = (edittext) findviewbyid(r.id.search); mrecyclerview = (recyclerview) findviewbyid(r.id.recyclerview); mrecyclerview.sethasfixedsize(true); mrecyclerview.setlayoutmanager(new linearlayoutmanager(this)); countrylist(); // in method, create list of items. // call adapter argument list of items , context. madapter = new simpleadapter(list, this); mrecyclerview.setadapter(madapter); addtextlistener(); } // method used create list of items. public void countrylist() { dataholder item = new dataholder(); item.setname("afghanistan"); item.settranslation("demo trans1"); list.add(item); dataholder item1 = new dataholder(); item1.setname("paksitan"); item1.settranslation("my pakistan"); list.add(item1); // list.add("afghanistan"); // list.add("albania"); // list.add("algeria"); // list.add("bangladesh"); // list.add("belarus"); // list.add("canada"); // list.add("cape verde"); // list.add("central african republic"); // list.add("denmark"); // list.add("dominican republic"); // list.add("egypt"); // list.add("france"); // list.add("germany"); // list.add("hong kong"); // list.add("india"); // list.add("iceland"); } public void addtextlistener() { search.addtextchangedlistener(new textwatcher() { public void aftertextchanged(editable s) { } public void beforetextchanged(charsequence s, int start, int count, int after) { } public void ontextchanged(charsequence query, int start, int before, int count) { query = query.tostring().tolowercase(); final list<dataholder> filteredlist = new arraylist<dataholder>(); (int = 0; < list.size(); i++) { final string text = list.get(i).getname().tolowercase(); if (text.contains(query)) { filteredlist.add(list.get(i)); } } mrecyclerview.setlayoutmanager(new linearlayoutmanager(mainactivity.this)); madapter = new simpleadapter(filteredlist, mainactivity.this); mrecyclerview.setadapter(madapter); madapter.notifydatasetchanged(); // data set changed } }); } } simpleadapter: public class simpleadapter extends recyclerview.adapter<simpleadapter.myviewholder> { private list<dataholder> list_item; public context mcontext; public simpleadapter(list<dataholder> list, context context) { list_item = list; mcontext = context; } // called when recyclerview needs new recyclerview.viewholder of given type represent item. @override public simpleadapter.myviewholder oncreateviewholder(viewgroup parent, int viewtype) { // create layout view view = layoutinflater.from(parent.getcontext()).inflate( r.layout.list_item, null); myviewholder myviewholder = new myviewholder(view); return myviewholder; } // called recyclerview display data @ specified position. @override public void onbindviewholder(final myviewholder viewholder, final int position) { viewholder.country_name.settext(list_item.get(position).getname()); viewholder.country_translation.settext(list_item.get(position).gettranslation()); viewholder.country_name.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { toast.maketext(mcontext, list_item.get(position).getname(), toast.length_long).show(); } }); } // initializes private fields used recyclerview. public static class myviewholder extends recyclerview.viewholder { public textview country_name, country_translation; public myviewholder(view itemlayoutview) { super(itemlayoutview); country_name = (textview) itemlayoutview.findviewbyid(r.id.country_name); country_translation = (textview) itemlayoutview.findviewbyid(r.id.country_translation); } } //returns total number of items in data set hold adapter. @override public int getitemcount() { return list_item.size(); } }
list_item.xml
<?xml version="1.0" encoding="utf-8"?> <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:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="com.numetriclabz.androidsearch.mainactivity"> <relativelayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <textview android:id="@+id/country_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:text="sohail" android:textcolor="#0b0080" android:textsize="16dp" /> <textview android:id="@+id/country_translation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginleft="15dp" android:layout_toendof="@+id/country_name" android:layout_torightof="@+id/country_name" android:text="new text" android:textcolor="#0b0080" /> </relativelayout> </relativelayout>
dataholder:
public class dataholder { string name, translation; public dataholder() { } public string getname() { return name; } public void setname(string name) { this.name = name; } public string gettranslation() { return translation; } public void settranslation(string translation) { this.translation = translation; } }
update:
public void countrylist() { (int = 0; < list.size(); i++) { dataholder item = new dataholder(); item.setname(i + "name"); item.settranslation(i + "translation"); list.add(item); } }
Comments
Post a Comment