Search code examples
androidandroid-viewpagersettext

Viewpager Set Text Function


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:

enter image description here

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;
}

Solution

  • 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);
        }