Search code examples
androidandroid-fragmentsviewandroid-viewpagerfragmentstatepageradapter

FragmentStatePagerAdapter returning wrong position to TextView


Ok, I have an Activity where I have viewpager and textview. Then I Have adapter that extends FragmentStatePagerAdapter, here is the code for it:

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;
    }

And finally I have fragment:

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;
    }

Now, the problem is, my TextView in the main activity isnt giving me back right positions for the fragment. It gives good getCount position, but when I slide to the right it goes + 1, when I slide to the left, it goes down to 0. When I put the whole textView code and xml in the fragment section, it works good, but then it slides with fragment. Any help?


Solution

  • 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) {
    
                }
            });