7

Ich habe eine ViewPager, in der ich die getPageTitle-Methode verwende, um den Titel der aktuellen Seite zu erhalten. HierSeitentitel in Android Viewpager ändern

ist der Adapter Code:

@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(); 
    } 

Nun möchte Ich mag die Seite Titel der vorherigen und nächsten Fragmente aktualisieren. Ich möchte sie als "vorheriges" und "nächstes" bezeichnen. Und es sollte auch auf nachfolgenden Seiten dynamisch aktualisiert werden.

Ich kann die aktuelle Seitentitelnummer erhalten. Wenn ich zum Beispiel das 5. Fragment anschaue, zeigt das aktuelle Fragment den Titel korrekt an. In beiden Ecken des ViewPagers wird die Titelnummer der vorherigen Seite auf der linken und die Titelnummer auf der nächsten Seite angezeigt. Nun möchte ich die Seitenüberschriften links und rechts neben "Vorherige" haben, ähnlich der Google Mail-App und wie sie die Anzahl der E-Mails im ViewPager anzeigt.

Die Hauptsache, die ich wissen möchte, ist, wie kann ich die Seitentiteldaten der nächsten/vorherigen Fragmente aus dem aktuellen Fragment wie in der Google Mail App zugreifen/ändern?

Antwort

6

Ich basierte dies auf den Proben, die mit der ViewPagerIndicator kommen.

Sie hören grundsätzlich nach, wenn sich die Seite ändert, und weisen den Adapter an, abhängig von der aktuellen Position einen anderen Seitentitel anzuzeigen.

Wenn Sie diese Proben haben arbeiten und nur diese beiden Dateien ersetzen, dann versuchen, die Probe Titles-> Standard und es funktioniert gut für mich ...

den Code für TestFragmentAdapter wie folgt geändert:

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

der Code für SampleTitlesDefault sieht wie folgt aus (hinzugefügt, um die 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

ich werde versuchen, diese – intrepidkarthi

+0

Großen. Es hat einfach funktioniert! – intrepidkarthi

+0

Froh, dass es funktioniert hat ... die Prämie auszahlen? – Matthieu