7

Tôi có một ViewPager trong đó tôi đang sử dụng phương thức getPageTitle để lấy tiêu đề của trang hiện tại.Thay đổi pagetitle trong Android Viewpager

Đây là mã bộ kết nối:

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

Bây giờ tôi muốn cập nhật các tiêu đề trang của các mảnh vỡ trước và sau. Tôi muốn đặt tên chúng là "trước" và "tiếp theo". Và nó cũng phải được cập nhật tự động trên các trang tiếp theo.

Tôi có thể lấy số tiêu đề trang hiện tại. Ví dụ: khi tôi xem đoạn thứ 5, đoạn hiện tại sẽ hiển thị tiêu đề đúng cách. Và ở cả hai góc của ViewPager, nó hiển thị số tiêu đề trang trước đó ở bên trái và số tựa đề trang tiếp theo ở bên phải. Bây giờ, tôi muốn có tiêu đề trang là "trước" ở bên trái và "tiếp theo" ở bên phải, tương tự như ứng dụng Gmail và cách nó hiển thị số lượng thư trong ViewPager.

Điều chính tôi muốn biết là làm cách nào để truy cập/sửa đổi dữ liệu tiêu đề trang của các đoạn tiếp theo/trước đó từ đoạn hiện tại giống như trong ứng dụng Gmail?

Trả lời

6

Tôi dựa trên mẫu này đi kèm với ViewPagerIndicator.

Bạn về cơ bản lắng nghe khi trang thay đổi và yêu cầu bộ điều hợp hiển thị tiêu đề trang khác tùy thuộc vào vị trí hiện tại.

Nếu bạn có những mẫu làm việc và bạn chỉ cần thay thế những hai tập tin, sau đó thử mẫu Titles-> mặc định và nó hoạt động tốt đối với tôi ...

Thay đổi mã cho TestFragmentAdapter như thế này:

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

mã cho SampleTitlesDefault trông như thế này (thêm 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

tôi sẽ cố gắng này – intrepidkarthi

+0

vĩ đại. Nó chỉ đơn giản là làm việc! – intrepidkarthi

+0

Vui vì bạn đã nhận được nó ... giải thưởng tiền thưởng? – Matthieu

Các vấn đề liên quan