【发布时间】:2016-01-15 14:56:29
【问题描述】:
我正在使用带有视图寻呼机的选项卡布局并动态添加片段。现在我需要根据片段的滑动或标签的点击来更新出现在ViewPagers 片段中的TextView。假设如果我单击第一个选项卡或滑动我的片段,那么OperatorPlanList 片段中的TextView 会更新为“我只是单击”之类的文本。
注意 - TextView 存在于片段的布局中。
当我尝试在获取视图方法FragmentStatePageAdapter 中使用position 查找位置时,我发现它在看到第一个或最后一个片段时会更新两次位置。
那么如何根据ViewPager屏幕上看到的当前片段动态更新我的片段???
这是我的FragmentStatePagerAdapter 适配器。
class ViewPagerFinder extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerFinder(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position){
return mFragmentList.get(position);
}
@Override
public int getCount() {
System.out.println("getcount>>>" + mFragmentList.size());
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
这就是我设置ViewPager的方式。
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerFinder(getSupportFragmentManager());
for(int i = 0; i<numberOfPlans;i++){
adapter.addFragment(new OperatorPlanList(),"Plan");
//This is how I am setting up my fragments.
viewPager.setAdapter(adapter);
}
}
这就是我设置Tabs 的方式。
private void setupTabIcons() {
System.out.println("number of plans ="+numberOfPlans);
for(int i = 0; i<numberOfPlans;i++){
HashMap<String,String> map = applist.get(i);
String planName = map.get("plan_name");
TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabOne.setText(planName);
tabLayout.getTabAt(i).setCustomView(tabOne);
}
}
这就是我调用方法的方式。
viewPager = (ViewPager)findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
【问题讨论】:
-
你的问题不清楚。
标签: android android-fragments android-viewpager android-tabs android-tablayout