Java 使用自定义适配器和扩展PagerAdapter的带有SmartTableLayout的设置选项卡标题

Java 使用自定义适配器和扩展PagerAdapter的带有SmartTableLayout的设置选项卡标题,java,android,android-viewpager,Java,Android,Android Viewpager,我有一个自定义的ViewPager适配器,我想知道是否有任何方法可以使用设置每个选项卡的标题?我在那里和他们开了一张票,但我希望有人知道怎么做。以下是我的自定义适配器: public class CustomPagerAdapter extends PagerAdapter { private int[] image_resources = { R.drawable.image1, R.drawable.image2,

我有一个自定义的ViewPager适配器,我想知道是否有任何方法可以使用设置每个选项卡的标题?我在那里和他们开了一张票,但我希望有人知道怎么做。以下是我的自定义适配器:

public class CustomPagerAdapter extends PagerAdapter {

    private int[] image_resources = {
            R.drawable.image1,
            R.drawable.image2,
            R.drawable.image3,
            R.drawable.image4,
            R.drawable.image5,
    };

    private Context ctx;
    private LayoutInflater layoutInflater;
    public CustomPagerAdapter(Context ctx) {
        this.ctx = ctx;
    }

    @Override
    public int getCount() {
        return image_resources.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object o) {
        return (view == (RelativeLayout) o);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View item_view = layoutInflater.inflate(R.layout.pager_item, container, false);
        ImageView imageview = (ImageView) item_view.findViewById(R.id.image_view);
        imageview.setImageResource(image_resources[position]);
        container.addView(item_view);
        return item_view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((RelativeLayout) object);
    }
}
这是我设置ViewPager的方式,也是我启动SmartTableLayout的地方:

 final ViewPager viewPager;
        CustomPagerAdapter adapter;
        viewPager = (ViewPager) findViewById(R.id.view_pager);
        adapter = new CustomPagerAdapter(context);
        viewPager.setAdapter(adapter);

        SmartTabLayout viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab);
        viewPagerTab.setViewPager(viewPager);
我想我还应该包括XML的相关部分:

<com.ogaclejapan.smarttablayout.SmartTabLayout
    android:id="@+id/viewpagertab"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="#fff"
    app:stl_indicatorAlwaysInCenter="false"
    app:stl_indicatorWithoutPadding="false"
    app:stl_indicatorInFront="false"
    app:stl_indicatorInterpolation="smart"
    app:stl_indicatorGravity="bottom"
    app:stl_indicatorColor="#33ffcc"
    app:stl_indicatorThickness="4dp"
    app:stl_indicatorCornerRadius="2dp"
    app:stl_overlineColor="#4D000000"
    app:stl_overlineThickness="0dp"
    app:stl_underlineColor="#4D000000"
    app:stl_underlineThickness="1dp"
    app:stl_dividerColor="#4D000000"
    app:stl_dividerThickness="1dp"
    app:stl_defaultTabBackground="?attr/selectableItemBackground"
    app:stl_defaultTabTextAllCaps="true"
    app:stl_defaultTabTextColor="#FC000000"
    app:stl_defaultTabTextSize="12sp"
    app:stl_defaultTabTextHorizontalPadding="16dp"
    app:stl_defaultTabTextMinWidth="0dp"
    app:stl_distributeEvenly="false"
    app:stl_clickable="true"
    app:stl_titleOffset="24dp"
    app:stl_drawDecorationAfterTab="false"
    />

<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="500dp"
    android:clickable="false"
    android:layout_below="@id/viewpagertab"
    android:scaleType="centerCrop" />


它实际上工作得很好,但我无法使用getPageTitle()以标准方式设置标题,因此标题为空。我想继续使用SmartTableLayout,因为它在美学上是多么吸引人。默认的寻呼机标题太可怕了

据我所知,您需要一个
FragmentPagerItemAdapter
并调用
。添加(“title”,class)

所以,您只需要调用
适配器。添加(…)

编辑:
查看演示应用程序-我认为您需要扩展
FragmentPagerItemAdapter
,而不是简单的
PagerAdapter

据我了解,文档中,您需要
FragmentPagerItemAdapter
并调用
。添加(“标题”,类)

所以,您只需要调用
适配器。添加(…)

编辑:
查看演示应用程序-我认为您需要扩展
FragmentPagerItemAdapter
,而不是简单的
PagerAdapter

显然,仅扩展PagerAdapter是可行的。因此,在此上下文中,正确的答案是覆盖自定义寻呼机适配器类CustomPagerAdapter中的getPageTitle():

@Override
public CharSequence getPageTitle(int position) {
    return title_resources[position];
}
您可以返回字符串[]数组,以便为每个选项卡提供标题。只需确保您的标题数量等于ViewPager中的图像或视图数量:

private String[] title_resources = {
        "Title 1",
        "Title 2",
        "Title 3",
        "Title 4",
        "Title 5",
};

显然,它是通过单独扩展PagerAdapter来实现的。因此,在此上下文中,正确的答案是覆盖自定义寻呼机适配器类CustomPagerAdapter中的getPageTitle():

@Override
public CharSequence getPageTitle(int position) {
    return title_resources[position];
}
您可以返回字符串[]数组,以便为每个选项卡提供标题。只需确保您的标题数量等于ViewPager中的图像或视图数量:

private String[] title_resources = {
        "Title 1",
        "Title 2",
        "Title 3",
        "Title 4",
        "Title 5",
};

隐马尔可夫模型。。。当“添加”到现有适配器时,它只要求我创建方法“add”。因此,它似乎无法识别呼叫。查看演示应用程序-我认为您需要扩展
FragmentPagerItemAdapter
而不是简单的
PagerAdapter
是的,我很害怕。没什么大不了的。我想这取决于那门课。我会到处看看。谢谢隐马尔可夫模型。。。当“添加”到现有适配器时,它只要求我创建方法“add”。因此,它似乎无法识别呼叫。查看演示应用程序-我认为您需要扩展
FragmentPagerItemAdapter
而不是简单的
PagerAdapter
是的,我很害怕。没什么大不了的。我想这取决于那门课。我会到处看看。谢谢这是正确的答案-不需要扩展FragmentPagerItemAdapter-只需覆盖PagerAdapter子类中的getPageTitle方法并为给定索引提供正确的标题。这是正确的答案-不需要扩展FragmentPagerItemAdapter-只需覆盖PagerAdapter中的getPageTitle方法子类并为给定索引提供适当的标题。