আপনি কীভাবে অ্যান্ড্রয়েডের জন্য ভিউপ্যাজারের বর্তমান পৃষ্ঠা নম্বরটি পাবেন?


84

আমি এর বর্তমান পৃষ্ঠার অবস্থানটি জানতে চাই ViewPager। আমি একটি অ্যাডাপ্টার তৈরি করি এবং এই অ্যাডাপ্টারটিকে ViewPager। এখন আমি বর্তমান পৃষ্ঠা নম্বর বা বর্তমান দর্শনের অবস্থান জানতে চাই, কারণ আমি সেই নির্দিষ্ট পৃষ্ঠায় কিছু অতিরিক্ত ইভেন্ট শুরু করতে চাই।

আমি viewPager.setCurrentItem(1);প্রথম আইটেমটি সেট করার জন্য ব্যবহার করেছি ।

বর্তমান পৃষ্ঠা পাওয়ার জন্য কি একই জাতীয় পদ্ধতি আছে?

উত্তর:


180

সর্বশেষতম প্যাকেজগুলিতে আপনি ব্যবহার করতে পারেন

vp.getCurrentItem()

বা

ভিপি ভিউ পেজার,

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

আপনার ভিউপিজারের জন্য আপনাকে একটি পৃষ্ঠা পরিবর্তন শ্রোতা রাখতে হবে। বর্তমান পৃষ্ঠাটি পাওয়ার জন্য ভিউপ্যাজারে কোনও পদ্ধতি নেই।

private int currentPage;

    private static class PageListener extends SimpleOnPageChangeListener{
            public void onPageSelected(int position) {
                Log.i(TAG, "page selected " + position);
                   currentPage = position;
        }
    }

অনেক অনেক ধন্যবাদ .. কাজগুলি..উইপপ্যাজে আপনি কি আগে কাজ করেছেন?
sam_k

@ এনক্রোনেট না, এটি করা উচিত নয়। পেজলিস্টনার শ্রেণি একটি অভ্যন্তর শ্রেণি হওয়া উচিত, নেস্টেড শ্রেণি নয়।
ডিসকো

পেজার ইমেজগুলির শুরুতে মাঝে মাঝে আমি নাল পয়েন্টার ব্যতিক্রম পেয়েছি, আরও নির্ভরযোগ্য সমাধানগুলির জন্য আমি এটি প্রস্তাব করি, এটি আমার পক্ষে ভাল কাজ করে। stackoverflow.com/a/13831450/2296787
এমবিএইচ

setOnPageChangeListener()অবচয় করা হয়েছে, addOnPageChangeListener()পরিবর্তে ব্যবহার করুন।
ZzZombo

47

একটি পদ্ধতি রয়েছে object_of_ViewPager.getCurrentItem()যা বর্তমানে পাতার পৃষ্ঠাতে দেখা পাতার অবস্থান ফিরিয়ে দেয়


আমি এই উত্তরটি প্রথমে পোস্ট করেছিলাম চকবরিস, এখনও এটি মনে হয় যে এটি আরও বেশি ভোট সংগ্রহ করেছে এবং স্পষ্টতই একটি সমর্থন রয়েছে। অদ্ভুত এই সাইটের উপায়গুলি :)
devanshu_kaushik

17

আপনি যদি কেবল পজিশনটি চান তবে vp.getCurrentItem()এটি আপনাকে দেবে, কেবলমাত্র সেই উদ্দেশ্যেই অন পেজ চ্যাঞ্জলিস্টারিয়ার () প্রয়োগ করার দরকার নেই।


8

আপনি নির্ধারণ করতে পারবেন যে সেটঅনপেজ চ্যাঞ্জলিস্টনারকে অবহেলা করা হয়েছে, নীচে অ্যাডঅনপেজ চ্যাঞ্জলিস্টেনার ব্যবহার করুন:

ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
       if(position == 1){  // if you want the second page, for example
           //Your code here
       }
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

7

এই সমস্যার জন্য অনপঞ্জের মত শ্রোতা সেরা একটি তবে এটির মধ্যে একটি ছোট্ট ভুলও হবে যা এটি 0 তম অবস্থানের প্রারম্ভিক সময়ের সময়টি সনাক্ত করবে না একবার আপনি পৃষ্ঠাটি পরিবর্তন করার পরে এটি পৃষ্ঠা নির্বাচিত অবস্থানটি সনাক্ত করতে শুরু করবে ... এর জন্য সমস্যা আমি সবচেয়ে সহজ সমাধান জমা

1. আপনাকে নির্বাচিত অবস্থানের মান বজায় রাখতে হবে এবং তারপরে এটি ব্যবহার করুন ....
2. কেস 1: পজিশনের শুরুতে সর্বদা শূন্য হয় ....
কেস 2: ধরুন আপনি যদি বর্তমান আইটেমটি সেট করেন তবে আপনি সেটি সেট করবেন বজায় রাখার অবস্থানে মান
3. তারপরে আপনার ক্রিয়াকলাপটি বজায় রাখার ব্যবহারের মাধ্যমে আপনার ক্রিয়াটি করুন ...

Public int maintain=0;
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {
             //Toast.makeText(MyActivity.this, i+"  Is Selected  "+data.size(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageSelected( int i) {
          // here you will get the position of selected page
            maintain = i;


        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });


updateButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Toast.makeText(MyActivity.this, i+"  Is Selected  "+data.size(), Toast.LENGTH_SHORT).show();
            data.set(maintain, "Replaced "+maintain);         
            myViewPager.getAdapter().notifyDataSetChanged();
        }
    });

4
setOnPageChangeListener হ্রাস করা হয়েছে। সেটঅনপেজ চ্যাঞ্জলিস্টারের পরিবর্তে অ্যাডঅনপেজ চ্যাঞ্জলিস্টনার ব্যবহার করুন।
সেলিন

6

getCurrentItem(), প্রথম এবং শেষ পৃষ্ঠার জন্য আমি এই কোডটি যুক্ত করে এটি ঠিক করেছিলাম জন্য সঠিক অবস্থানটি দেয় না:

public void CalcPostion() {    
    current = viewPager.getCurrentItem();

    if ((last == current) && (current != 1) && (current != 0)) {
        current = current + 1;
        viewPager.setCurrentItem(current);
    }
    if ((last == 1) && (current == 1)) {
        last = 0;
        current = 0;
    }
    display();
    last = current;
}

5

ভিউপেজ.আইআর-তে কোনও পদ্ধতি গেইটকারেন্ট আইটেম () নেই i


4
আপনাকে অ্যান্ড্রয়েড এসডিকে ম্যানেজারে সামঞ্জস্যতা প্যাকেজ আপডেট করতে হবে, তবে কেবলমাত্র আপনি সেই পদ্ধতিটি পান।
krisDrOid

5

SetOnPageChangeListener () পদ্ধতি অসমর্থিত হয়েছে। ব্যবহারের addOnPageChangeListener (OnPageChangeListener) পরিবর্তে।

আপনি অনপেজ চ্যাঞ্জলিস্টনার ব্যবহার করতে পারেন এবং onPageSelected()পদ্ধতিটির ভিতরে অবস্থান অর্জন করতে পারেন এটি একটি উদাহরণ:

   viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            Log.d(TAG, "my position is : " + position); 
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

অথবা আসল অবস্থান পেতে কেবল getCurrentItem () ব্যবহার করুন :

viewPager.getCurrentItem();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.