从Fragment Adapter和Fragment Class获取活动的页面数量

时间:2013-05-22 06:21:56

标签: android android-fragments android-viewpager paging

Paging View

我有一个细节活动。在这里,我正在使用分页控制器

<android.support.v4.view.ViewPager ..../>用于片段详细信息视图。

我的代码::

ViewPager pager = (ViewPager) findViewById(R.id.pagerHandbookDetails);

/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();

/** Instantiating FragmentPagerAdapter */
DetailsFragmentAdapter pagerAdapter = new DetailsFragmentAdapter(fm,cases);

/** Setting the pagerAdapter to the pager object */
pager.setAdapter(pagerAdapter);
pager.setCurrentItem(0);

然后,详细信息片段适配器类扩展 FragmentPagerAdapter

int PAGE_COUNT = 9;

@Override
public Fragment getItem(int arg0) {

    DetailsFragment detailsFragment = new DetailsFragment();
    Bundle data = new Bundle();
    Log.d("Current Page", "Page " + arg0);

    data.putInt("current_page", arg0);
    detailsFragment.setArguments(data);
    return detailsFragment;
}

课程详情片段扩展 Fragment

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle data = getArguments();
    int mCurrentPage = data.getInt("current_page", 0);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        layoutPaging = (LinearLayout) v.findViewById(R.id.layoutPagingView);

        for(int i = 0; i < 9; i++){

            ImageView image1 = new ImageView(layoutPaging.getContext());
            image1.setTag(i);

            if(i == mCurrentPage)
            {
                image1.setImageResource(R.drawable.black_dot);
            }
            else
            {
                image1.setImageResource(R.drawable.white_dot);
            }

            layoutPaging.addView(image1); 
        }
        .......
}

这样的工作正常。

所以每当我刷页面时,它显然会移动所有细节片段页面的内容。所以它也会移动我的自定义视图布局进行分页。它看起来很奇怪。

我希望此布局是静态的,并根据滑动页面更改图像内容。

如果我在主要细节类中使用此布局,那么我没有从片段适配器更改图像的当前页面值。它只是在片段细节类中更改值。

我被困在这里。请帮帮我。

任何帮助将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

只需尝试使用此工具SimpleOnPageChangeListener即可收听page更改。

private static class PageListener extends SimpleOnPageChangeListener{
        public void onPageSelected(int position) {
            int  currentPage = position;
 }
    }

在你的ViewPagerActivity内写下

private PageListener pageListener;
onCreate()方法中的

就像这样

    pageListener=new PageListener()
pager.setOnPageChangeListener(pageListener);

答案 1 :(得分:1)

您可以在布局中添加由以下内容提供的页面指示符:

https://github.com/Papercloud/SimpleViewPagerIndicator

您需要放置控件并将viewpager控制器的对象设置为SimpleViewPagerIndicator。您可以在那里找到示例代码和实现步骤

使用这些类,您可以获得不会随页面滚动的指标