কীভাবে প্রোগ্রামে ভিউপ্যাজেয়ারে পরবর্তী ভিউ প্রদর্শিত হয়?


107

আমি একটি ভিউপিজার তৈরি করেছি এবং সবকিছু ঠিকঠাক চলছে, তবে আমি ভিউপাগারের বাইরে আগের একটি বোতাম রাখতে চাই যা ভিউপ্যাজারের অভ্যন্তরে নেভিগেট করতে ব্যবহৃত হতে পারে। আমি নিজে থেকে সোয়াইপ না করে কীভাবে ভিউপ্যাজারের পরবর্তী আইটেমটিতে যেতে পারি?


39
এই কাজটি ভিউপেজ.সেটকারেন্ট আইটেম (ইনটেক্স ইনডেক্স) করে না; ?
blessenm

এটি করেছিল, আমি মনে করি এই প্রশ্নটি একটি সদৃশ।
বৈভব মিশ্র

উত্তর:


154

Blessenm উত্তর হিসাবে viewpager.setCurrentItem(int index)যেতে উপায়।


5
দুর্ভাগ্যক্রমে আমি আলাদা আচরণ পেতে পারি, যখন ব্যবহারকারী নিজে নিজেই সোয়াইপ করে এবং যখন আমি সেটকন্টার আইটেম ব্যবহার করে লাফিয়ে যাই। কলগুলির ক্রমটি বিপরীত হয়। আমি যখন সোয়াইপ করি তখন এটি প্রথমে অনপেজ চ্যাঞ্জলিস্টনারকে # অনপেজসিলিগ্রেটেড বলে এবং তারপরে এটি খণ্ডগুলিতে সেটউজারভিজিবিলহিন্টকে কল করে। যদি আমি সেটক্রেন্ট আইটেমটি ব্যবহার করি তবে এটি প্রথমে খণ্ডগুলিতে সেট ইউজারভিসিবলহিন্টকে কল করে এবং তারপরে এটি অনপেজ চ্যাঞ্জলিস্টারিয়ারকে # অনপেজসিলেক্টড বলে, যা আমার ক্ষেত্রে সত্যই একটি সমস্যা: / তাই আমি প্রাকৃতিক আচরণ বজায় রাখার উপায় খুঁজে প্রত্যাশা করেছিলাম তবে এখনও প্রোগ্রামিয়েটিকভাবে অন্য পৃষ্ঠায় সরিয়ে নিয়েছি ।
এজেন্টকনফফ

@ বৈভব কী করব যদি আমি ক্রিয়াকলাপের পরবর্তী দৃশ্যটি দেখাতে চাই
প্রবস

@ এজেন্টকনোফফ আপনি কি এই সমস্যার সমাধান খুঁজে পেতে পরিচালনা করেছেন? আমি এই অদ্ভুত আচরণটিও দেখতে পাই তবে প্রোগ্রামালিমেটি পরবর্তী / পূর্ববর্তী খণ্ডে স্যুইচ করার সময় নিয়মিত সোয়াইপের প্রবাহ রাখার কোনও উপায় খুঁজে পাই না।
গিল

@ গিল আমি ভয় পাচ্ছি না - আমি বর্তমান দৃশ্যের প্রোগ্রাম্যাটিকাল পরিবর্তনটি সরিয়ে দিয়েছি এবং কেবল সোয়াইপিংয়ের অনুমতি দিয়েছি। তবে আমরা পরে পুরোপুরি বাস্তবায়ন পরিবর্তন করেছি সুতরাং আমি আর এই সমস্যাটি অনুসরণ করিনি।
এজেন্টকনফফ

107

কেবল সম্পূর্ণতার জন্য একটি সম্পূর্ণ বাস্তবায়ন:

public void MoveNext(View view) {
    //it doesn't matter if you're already in the last item
    pager.setCurrentItem(pager.getCurrentItem() + 1);
}

public void MovePrevious(View view) {
    //it doesn't matter if you're already in the first item
    pager.setCurrentItem(pager.getCurrentItem() - 1);
}

আপনার এটি প্রয়োজন হতে পারে। উদাহরণস্বরূপ, যদি পরিবর্তনটি একটি ক্লিক দ্বারা ট্রিগার হয়, আপনি (nextBt.getId() == view.id)এটি কী কারণে ঘটেছে তা জানতে ব্যবহার করতে পারেন
টমাস ওল্ফ

2
@ সাগর তিনি এক্সএমএলে ক্লিক শোনার বোতামটি সেট করে থাকতে পারেন, সেক্ষেত্রে আপনার প্রয়োজন না হলেও আপনার কাছে অবশ্যই ভিউ প্যারামিটার থাকতে হবে।
আশীষ ত

পৃষ্ঠা সোয়াইপিং অ্যানিমেশন আসছে না?
লাভকুশ অগ্রওয়াল

18

সবচেয়ে সহজ উপায়:

nextButton.setOnClickListener { pager.arrowScroll(View.FOCUS_RIGHT) }
prevButton.setOnClickListener { pager.arrowScroll(View.FOCUS_LEFT) }

নোট করুন এটি নিয়ে কাজ করছে না ViewPager2
মাইক্রার

0

আমি এটিকে আরও ভাল করে আনি, অ্যান্ড্রয়েডসন।

  private void MoveNextTopSlideShow(View view)
    {
        if (_viewPager_TopImageSlide.CurrentItem == _viewPager_TopImageSlide.ChildCount)
        {
            if (_viewPager_TopImageSlide.ChildCount > 0)
            {
                _viewPager_TopImageSlide.SetCurrentItem(0,true);
            }
        }
        else
        {
            //it doesn't matter if you're already in the last item
            _viewPager_TopImageSlide.SetCurrentItem(_viewPager_TopImageSlide.CurrentItem + 1, true);
        }
    }

    private void MovePreviousTopSlideShow(View view)
    {
        if (_viewPager_TopImageSlide.CurrentItem == 0)
        {
            if (_viewPager_TopImageSlide.ChildCount > 0)
            {
                _viewPager_TopImageSlide.SetCurrentItem(_viewPager_TopImageSlide.ChildCount-1, true);
            }
        }
        else
        {
            //it doesn't matter if you're already in the first item
            _viewPager_TopImageSlide.SetCurrentItem(_viewPager_TopImageSlide.CurrentItem - 1, true);
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.