7

나는 현재 페이지의 제목을 얻기 위해 getPageTitle 메서드를 사용하고있는 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(); 
    } 

가 지금은 이전 및 다음 조각의 페이지 제목을 업데이 트하려는 : 여기

는 어댑터 코드입니다. 나는 그들을 "이전"과 "다음"이라고 지명하고 싶다. 또한 이후 페이지에서도 동적으로 업데이트되어야합니다.

현재 페이지 제목 번호를 얻을 수 있습니다. 예를 들어, 다섯 번째 조각을 볼 때 현재 조각에 제목이 제대로 표시됩니다. ViewPager의 양쪽 모서리에는 오른쪽의 왼쪽 및 다음 페이지 제목 번호에 이전 페이지 제목 번호가 표시됩니다. 이제 페이지 제목을 Gmail 앱과 비슷하게 ViewPager에서 메일 개수를 표시하는 방식과 같이 오른쪽에서 왼쪽과 "다음"으로 페이지 제목을 갖고 싶습니다.

Gmail 앱에서와 같이 현재 조각에서 다음/이전 조각의 페이지 제목 데이터에 액세스/수정하려면 어떻게해야합니까?

답변

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에 대한 코드는 다음과 같습니다

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