gpt4 book ai didi

android - 在 Android Viewpager 中更改 pagetitle

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:52 25 4
gpt4 key购买 nike

我有一个 ViewPager,我在其中使用 getPageTitle 方法获取当前页面的标题。

这是适配器代码:

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

现在我想更新上一​​个和下一个 fragment 的页面标题。我想将它们命名为“上一个”和“下一个”。它也应该在后续页面上动态更新。

我可以获得当前页面的标题编号。例如,当我查看第 5 个 fragment 时,当前 fragment 将正确显示标题。在 ViewPager 的两个角上,它在左侧显示上一页标题编号,在右侧显示下一页标题编号。现在,我想让页面标题在左侧为“上一个”,在右侧为“下一个”,类似于 Gmail 应用程序以及它如何在 ViewPager 中显示邮件计数。

我想知道的主要事情是如何像在 Gmail 应用程序中一样访问/修改当前 fragment 的下一个/上一个 fragment 的页面标题数据?

最佳答案

我基于 ViewPagerIndicator 附带的示例。

您基本上是监听页面何时更改,并告诉适配器根据当前位置显示不同的页面标题。

如果您有这些示例,并且您只是替换了这两个文件,那么请尝试示例 Titles->Default,它对我来说工作正常...

像这样更改了 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
}

关于android - 在 Android Viewpager 中更改 pagetitle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13684615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com