7

में पेजेटिंग बदलना मेरे पास ViewPager है जिसमें मैं वर्तमान पृष्ठ का शीर्षक प्राप्त करने के लिए getPageTitle विधि का उपयोग कर रहा हूं।Android Viewpager

@Override 
    public Fragment getItem(int i) { 
     details = productData.get(i); 
     Fragment fragment = new ProductViewFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ProductViewFragment.ARG_SECTION_NUMBER, i + 1); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return productData.size(); 
    } 

    public CharSequence getPageTitle(int position) 
    { 
     return (position+1)+" of "+myData.size(); 
    } 

अब मैं पिछले और अगले टुकड़े की पृष्ठ शीर्षक अद्यतन करने के लिए करना चाहते हैं:

यहाँ एडाप्टर कोड है। मैं उन्हें "पिछला" और "अगला" के रूप में नामित करना चाहता हूं। और इसे बाद के पृष्ठों पर गतिशील रूप से अद्यतन किया जाना चाहिए।

मैं वर्तमान पृष्ठ शीर्षक संख्या प्राप्त करने में सक्षम हूं। उदाहरण के लिए, जब मैं 5 वें खंड को देखता हूं, तो वर्तमान खंड शीर्षक को सही तरीके से दिखाएगा। और ViewPager के दोनों कोनों पर यह दाईं ओर बाईं पृष्ठ और दाईं ओर शीर्षक पृष्ठ संख्या पर पिछले पृष्ठ शीर्षक संख्या दिखाता है। अब, मैं पृष्ठ के शीर्षक को बाईं ओर "पिछला" और दाईं ओर "अगला" होना चाहता हूं, जीमेल ऐप के समान और यह ViewPager में मेल गिनती कैसे दिखाता है।

मुख्य बात यह है कि मैं जानना चाहता हूं कि मैं जीमेल ऐप में मौजूदा खंड से अगले/पिछले टुकड़ों के पेज शीर्षक डेटा को कैसे एक्सेस/संशोधित कर सकता हूं?

उत्तर

6

मैं इसे ViewPagerIndicator के साथ आने वाले नमूने पर आधारित करता हूं।

आप मूल रूप से सुनते हैं कि पृष्ठ कब बदलता है और एडाप्टर को वर्तमान स्थिति के आधार पर एक अलग पृष्ठ शीर्षक प्रदर्शित करने के लिए कहता है।

आप उन नमूनों से काम कर रहा है और आप सिर्फ उन दो फाइलों की जगह है, तो> डिफ़ॉल्ट Titles- नमूना कोशिश करते हैं और यह मेरे लिए ठीक काम करता है ...

इस तरह TestFragmentAdapter के लिए कोड परिवर्तित:

package com.viewpagerindicator.sample; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import com.viewpagerindicator.IconPagerAdapter; 

class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter { 
    protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", }; 
    protected static final int[] ICONS = new int[] { 
      R.drawable.perm_group_calendar, 
      R.drawable.perm_group_camera, 
      R.drawable.perm_group_device_alarms, 
      R.drawable.perm_group_location 
    }; 

    private int mCount = CONTENT.length; 

    // CHANGE STARTS HERE 
    private int current_position=0; 

    public void set_current_position(int i) { 
     current_position = i; 
    } 
    // CHANGE ENDS HERE 

    public TestFragmentAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return TestFragment.newInstance(CONTENT[position % CONTENT.length]); 
    } 

    @Override 
    public int getCount() { 
     return mCount; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // CHANGE STARTS HERE 
     if (position == current_position-1) { 
      return "Previous"; 
     } else if (position == current_position+1) { 
      return "Next"; 
     } 
     // CHANGE ENDS HERE 
     return TestFragmentAdapter.CONTENT[position % CONTENT.length]; 
    } 

    @Override 
    public int getIconResId(int index) { 
     return ICONS[index % ICONS.length]; 
    } 

    public void setCount(int count) { 
     if (count > 0 && count <= 10) { 
      mCount = count; 
      notifyDataSetChanged(); 
     } 
    } 
} 

SampleTitlesDefault के लिए कोड इस तरह दिखता है (OnPageChangeListener जोड़ा)

package com.viewpagerindicator.sample; 

import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

import com.viewpagerindicator.TitlePageIndicator; 

// CHANGE ADDED implements.... HERE 
public class SampleTitlesDefault extends BaseSampleActivity implements ViewPager.OnPageChangeListener { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.simple_titles); 

     mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); 

     mPager = (ViewPager)findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     mIndicator = (TitlePageIndicator)findViewById(R.id.indicator); 
     mIndicator.setViewPager(mPager); 
     // CHANGE STARTS HERE 
     mIndicator.setOnPageChangeListener(this); 
     // CHANGE ENDS HERE 
    } 

    // CHANGE STARTS HERE 
    @Override 
    public void onPageScrolled(int i, float v, int i1) { 
    } 

    @Override 
    public void onPageSelected(int i) { 
     mPager = (ViewPager)findViewById(R.id.pager); 
     ((TestFragmentAdapter)mPager.getAdapter()).set_current_position(i); 
    } 

    @Override 
    public void onPageScrollStateChanged(int i) { 
    } 
    // CHANGE ENDS HERE 
} 
+0

मैं इस – intrepidkarthi

+0

ग्रेट की कोशिश करेंगे। यह बस काम किया! – intrepidkarthi

+0

खुशी है कि आप इसे काम कर रहे हैं ... बक्षीस का पुरस्कार? – Matthieu