7

私はViewPagerを持っています。私はgetPageTitleメソッドを使って現在のページのタイトルを取得しています。ここでAndroidビューページでのページタイトルの変更

は、アダプタコードです:

@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の両隅には、前のページのタイトル番号が左側のページタイトル番号と右側の次のページタイトル番号が表示されます。今、Gmailのアプリと同様に、ページタイトルを左側に「前」、右に「次へ」としたいとします。また、ViewPagerでメールカウントを表示する方法もあります。

私が知りたいことは、Gmailアプリケーションと同じように、現在のフラグメントから次の/前のフラグメントのページタイトルデータにアクセス/変更することです。

答えて

6

これは、ViewPagerIndicatorに付属のサンプルに基づいています。

基本的にページが変更されたときにリッスンし、現在の位置に応じて異なるページタイトルを表示するようにアダプタに指示します。

あなたはそれらのサンプルが動作し、あなただけのこれらの2つのファイルを置き換えている場合は、その後、>デフォルト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ためのコードは次のようになります

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

グレートをしようとします(OnPageChangeListenerを追加しました)。それは単に働いた! – intrepidkarthi

+0

あなたはそれが働いてうれしい...賞金を授与する? – Matthieu

関連する問題