android viewpager - refresh listView by clicking outside of it -
i have viewpager adapter extends fragmentstatepageradapter, has show fragment repeats same layout (in whic there listview) every page ... problem how can update listview visible clicking on button outside of fragment? can refresh ones in not visible pages,but not ones displayed or adjacent... 1 possible solution reset adapter, doesn't seems right one, because it' s slow... please me?
public class mainactivity extends fragmentactivity implements onclicklistener{ @override protected void oncreate(bundle arg0) { // todo auto-generated method stub super.oncreate(arg0); setcontentview(r.layout.layout1); pageradapter = new adapterpager(getsupportfragmentmanager()); ctx=this; mviewpager = (viewpager) findviewbyid(r.id.pager); mviewpager.setadapter(pageradapter); pagertab=(pagertabstrip) findviewbyid(r.id.pager_tab_strip); mviewpager.setcurrentitem(paginacentrale); modifica=(imageview)findviewbyid(r.id.modifica); modifica.setonclicklistener(this); } @override public void onclick(view arg0) { // todo onclick switch (arg0.getid()){ case r.id.modifica: //here call method caricalista() of fragment break; } } public static class adapterpager extends fragmentstatepageradapter { public adapterpager(fragmentmanager fm) { super(fm); } @override public int getitemposition(object object) { // todo auto-generated method stub return super.getitemposition(object); } @override public fragment getitem(int i) { fragment fragment; bundle args = new bundle(); args.putint("position", i); fragment=new fragment1(); fragment.setarguments(args); return fragment; } @override public int getcount() { return 1000;} @override public charsequence getpagetitle(int i) { string title=string.valueof(i); return title; } } public static class fragment1 extends fragment implements onitemclicklistener{ int fragmentposition; listview lv; list<lista> lista= new arraylist<lista>(); public fragment1(){ } public static fragment1 newinstance(){ return new fragment1(); } @override public void onresume() { // todo auto-generated method stub super.onresume(); caricalista("")} } @override public view oncreateview(layoutinflater inflater, viewgroup container,bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment1, container, false); lv=(listview) rootview.findviewbyid(r.id.listviewcompiti); bundle args = getarguments(); int position= args.getint("position"); fragmentposition=position; lv.setonitemclicklistener(this); homelistadapter= new homelistadapterwithcache(ctx,r.layout.list_item_home,lista); lv.setadapter(homelistadapter); return rootview; }
you have store current fragment mainactivity , , change every time page changes. call method of current fragments.
check out how mainactivity should like:
public class mainactivity extends fragmentactivity implements onclicklistener{ &fragment mcurrentfragment;* protected void oncreate(bundle arg0) { super.oncreate(arg0); setcontentview(r.layout.layout1); pageradapter = new adapterpager(getsupportfragmentmanager()); ctx=this; mviewpager = (viewpager) findviewbyid(r.id.pager); mviewpager.setadapter(pageradapter); pagertab=(pagertabstrip) findviewbyid(r.id.pager_tab_strip); mviewpager.setcurrentitem(paginacentrale); modifica=(imageview)findviewbyid(r.id.modifica); modifica.setonclicklistener(this); *mviewpager.setonpagechangelistener(new viewpager.simpleonpagechangelistener() { @override public void onpageselected(int position) { mcurrentfragment = pageradapter.getitem(position); }* }); @override public void onclick(view arg0) { // todo onclick switch (arg0.getid()){ case r.id.modifica: *mcurrentfragment.caricalista();* break; } } }
Comments
Post a Comment