如何在PagerAdapter中设置起始页面并滑动到下一页/上一页?

时间:2014-08-16 07:33:32

标签: android

我有两项活动。第一个活动有一个列表,第二个活动显示与列表中所选项目相关的内容。我创造了 PagerAdapter的子类,通过轻扫不必返回第一个活动并选择下一个项目来更改第二个活动的内容。 (与翻页完全相同)。但问题是当我选择一个项目时,第二个活动从开始开始!当我在instantiateItem()方法中设置setCurrentItem()方法以提供相应项目的内容时,它可以工作,但是我无法刷页面并更改文本! 无论如何,我想从中间打开一本书并正常翻转! :) 我怎样才能消除这些问题? TNX!

class MyPagesAdapter extends PagerAdapter
{
    @Override
    public int getCount()
    {
        return DataStorage.SIZE;
    }

    //Create the given page (indicated by position)
    @SuppressLint("InflateParams")
    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        View page = inflater.inflate(R.layout.view_pager, null);

        DB.setTextDescription(position + 1);


        ((TextView)page.findViewById(R.id.textView1)).setText(""+DataStorage.ID);
        ((TextView)page.findViewById(R.id.textView2)).setText(DataStorage.EnglishTitle);
        ((TextView)page.findViewById(R.id.textView3)).setText(""+DataStorage.EnglishContext);
        ((TextView)page.findViewById(R.id.textView4)).setText(""+DataStorage.PersianTitle);
        ((TextView)page.findViewById(R.id.textView4)).setTypeface(typeFace);
        ((TextView)page.findViewById(R.id.textView5)).setText(""+DataStorage.PersianContext);
        ((TextView)page.findViewById(R.id.textView5)).setTypeface(typeFace);


        //Add the page to the front of the queue
        ((ViewPager) container).addView(page, 0);
        return page;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1)
    {

        //See if object from instantiateItem is related to the given view
        //required by API
        return arg0==(View)arg1;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object)
    {
        ((ViewPager) container).removeView((View) object);
        object=null;
    }
}

1 个答案:

答案 0 :(得分:0)

我没有看到你的所有代码,但它应该像这样工作。

当您通过Activity从一个Intent切换到另一个通过所选项目ID时。在您的第二个onCreate()Activity获取该ID,然后在ViewPager上使用它。您可能需要将ID转换为项目位置,以便拨打setCurrentItem()