java - How to handle listview event while using new android sliding tabs technique? -
i tried searching internet found tutorials using old tabhost technique. using new toolbar , adding tabs under it. want display contents fetched database in listview dynamically when particular tab focused. following activity code: [edited]
public class poststory extends actionbaractivity implements viewpager.onpagechangelistener { // declaring view , variables toolbar toolbar; viewpager pager; viewpageradapter adapter; slidingtablayout tabs; charsequence titles[]={"explore","publish","profile"}; int numboftabs =3; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_post_story); // creating toolbar , setting toolbar activity toolbar = (toolbar) findviewbyid(r.id.tool_bar); setsupportactionbar(toolbar); // creating viewpageradapter , passing fragment manager, titles fot tabs , number of tabs. adapter = new viewpageradapter(getsupportfragmentmanager(),titles,numboftabs); // assigning viewpager view , setting adapter pager = (viewpager) findviewbyid(r.id.pager); pager.setadapter(adapter); pager.setonpagechangelistener(this); // assiging sliding tab layout view tabs = (slidingtablayout) findviewbyid(r.id.tabs); tabs.setdistributeevenly(true); // make tabs fixed set true, makes tabs space evenly in available width // setting custom color scroll bar indicator of tab view tabs.setcustomtabcolorizer(new slidingtablayout.tabcolorizer() { @override public int getindicatorcolor(int position) { return getresources().getcolor(r.color.tabsscrollcolor); } }); // setting viewpager slidingtabslayout tabs.setviewpager(pager); log.d("tabsid ",integer.tostring(tabs.getid())); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } @override public void onpageselected(int position) { // if(position == ?) fetchandsetdata(); // here fetch , set data log.d("pos ",integer.tostring(position)); toast.maketext(this,"page changed",toast.length_long); } @override public void onpagescrollstatechanged(int state) {} @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) {} }
this tab activity xml code
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="aru.cramine.studio.aru.poststory"> <item android:id="@+id/action_publish" android:title="@string/publish" android:orderincategory="1" app:showasaction="always" /> <item android:id="@+id/action_save" android:title="@string/save" android:orderincategory="2" app:showasaction="always" /> <item android:id="@+id/action_cancel" android:title="@string/cancel" android:orderincategory="3" app:showasaction="ifroom" /> </menu>
this tab.java code public class tab1 extends fragment {
@override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) { view v =inflater.inflate(r.layout.tab_1,container,false); return v; } }
and tab.xml
<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=".mainactivity" > <listview android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" > </listview> </relativelayout>
you can add onpagechangelistener
, if specific tab gets selected fetch data , fill listview
it.
public class poststory extends actionbaractivity implements viewpager.onpagechangelistener { ... @override protected void oncreate(bundle savedinstancestate) { ... pager = (viewpager) findviewbyid(r.id.pager); pager.setadapter(adapter); pager.setonpagechangelistener(this); ... } @override public void onpageselected(int position) { if(position == ?) fetchandsetdata(); // here fetch , set data } @override public void onpagescrollstatechanged(int state) {} @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) {} ... }
Comments
Post a Comment