I want to add a category bar in ViewPager
page. The category title change according to ViewPager
page change. While i tried to do this ViewPager
working fine but the title doesn't change.
this is the page layout:
I added the below code in PagerAdapter
:
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
TextView cate_title = (TextView) getActivity().findViewById(R.id.cate_title);
String title_name = "";
switch(pos) {
case 0:
title_name = "MACARONS";
cate_title.setText(title_name);
return new SP_macarons();
case 1:
title_name = "CHOCOLATE";
cate_title.setText(title_name);
return new SP_chocolate();
case 2:
title_name = "CHEESE MOUSSE";
cate_title.setText(title_name);
return new SP_cheese_mousse();
default:
break;
}
return null;
}
@Override
public int getCount() {
return 3;
}
and this is the Fragment
code
public class SpecialCake extends Fragment {
private ViewPager viewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.special_cake, container, false);
final ViewPager pager = (ViewPager)view.findViewById(R.id.cate_pager);
pager.setAdapter(new MyPagerAdapter(getChildFragmentManager()));
ImageButton prebtn = (ImageButton) view.findViewById(R.id.leftarrow);
prebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pager.setCurrentItem(getItem(-1), true); //getItem(-1) for previous
}
private int getItem(int i) {
return pager.getCurrentItem() + i;
}
});
ImageButton nxtbtn = (ImageButton) view.findViewById(R.id.rightarrow);
nxtbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pager.setCurrentItem(getItem(+1), true); //getItem(-1) for previous
}
private int getItem(int i) {
return pager.getCurrentItem() + i;
}
});
return view;
}
You can have OnPageChangeListener
.
Initially set title to MACARONS and then change the title when the page changes.
textView.setTitle("MACRONS);
Then
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
String title_name = "";
// depending on the position do something
if(position==0)
{
title_name = "MACARONS";
}
else if(position==1)
{
title_name = "CHOCOLATE";
}
else
{
title_name = "MACARONS";
}
// Now set title to text
textView.setTitle(title_name);
}