FragmentStatePagerAdapter 向 TextView 返回错误的位置

Posted

技术标签:

【中文标题】FragmentStatePagerAdapter 向 TextView 返回错误的位置【英文标题】:FragmentStatePagerAdapter returning wrong position to TextView 【发布时间】:2015-08-23 12:38:52 【问题描述】:

好的,我有一个 Activity,其中有 viewpager 和 textview。然后我有扩展 FragmentStatePagerAdapter 的适配器,这是它的代码:

public AdapterCustomPage(FragmentManager fm, Context context, TextView TV ) 
        super(fm);
        mContext = context;
        mTV = TV;
    

    @Override
    public Fragment getItem(int position) 

        // Create fragment object
        Fragment fragment = new ImageFragmentKatalozi();
        Bundle args = new Bundle();
        Log.i("Poizicija" , String.valueOf(position));
        String url = Static.katalozi.getSlikeKataloga().get(position);
        args.putString("url", url);

        fragment.setArguments(args);



        mTV.setText(String.valueOf(position + 1) + "/" + String.valueOf(maxBrojStrana));

        String link = Static.katalozi.getUrl();
        args.putString("linkKataloga", link);

        if(position == 0)
            Message.message(mContext, "Na prvoj stranici kataloga ste");
        
        if(position == getCount() - 1)
            Message.message(mContext, "Na poslednjoj stranici kataloga ste");
        


        return fragment;
    


    @Override
    public int getItemPosition(Object object) 
        pozicija = super.getItemPosition(object);
        return super.getItemPosition(object);
    

    @Override
    public int getCount() 
        return maxBrojStrana;
    

最后我有片段:

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

        View rootView = inflater.inflate(R.layout.fragment_katalozi_slike, container, false);

        args = getArguments();
        imageView = (TouchImageView) rootView.findViewById(R.id.imageViewAdapterZaListanjeKataloga);
        Picasso.with(getActivity()).load(args.getString("url")).placeholder(R.drawable.load).error(R.drawable.error).into(imageView);



        return rootView;
    

现在,问题是,我在主要活动中的 TextView 并没有给我返回片段的正确位置。它提供了很好的 getCount 位置,但是当我向右滑动时,它变为 + 1,当我向左滑动时,它下降到 0。当我将整个 textView 代码和 xml 放在片段部分时,它工作得很好,但是然后它与片段一起滑动。有什么帮助吗?

【问题讨论】:

【参考方案1】:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() 
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 

            

            @Override
            public void onPageSelected(int position) 
                brojStranica.setText(String.valueOf(position + 1) + "/" + String.valueOf(Static.katalozi.getSlikeKataloga().size()));
            

            @Override
            public void onPageScrollStateChanged(int state) 

            
        );

【讨论】:

以上是关于FragmentStatePagerAdapter 向 TextView 返回错误的位置的主要内容,如果未能解决你的问题,请参考以下文章

FragmentStatePagerAdapter 向 TextView 返回错误的位置

如何将 FragmentFactory 与 FragmentStatePagerAdapter 一起使用

getItem 函数在 FragmentStatePagerAdapter 中调用两次?

FragmentPagerAdapter和FragmentStatePagerAdapter区别?

FragmentStatePagerAdapter onPageSelected事件

Android - 使用 FragmentStatePagerAdapter 保存/恢复状态