我想在ViewPager
页面添加一个类别栏。类别标题根据ViewPager
页面更改而改变。虽然我试图做到这一点ViewPager
工作正常,但标题不会改变。Viewpager设置文本功能
这是页面布局:
我添加下面的代码在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;
}
,这是Fragment
代码
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;
}
这是为我工作!但我有一个问题 当我第一次点击进入该页面时,cate_title是空白的。 我点击下一步后,点击回到第一页,然后标题显示出来。 – JsLaw
在起始处设置标题。在OnpageChangeListener之前。我在答案中补充了这一点。 – Raghunandan
谢谢你帮我解决问题! – JsLaw