gpt4 book ai didi

android - PagerSlidingTabStrip - 在运行时添加新选项卡

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:21 28 4
gpt4 key购买 nike

我正在使用 PagerSlidingTabStrip 来显​​示 3 个选项卡,每个选项卡中都包含 ListView 。

我有一个场景,我需要在运行时添加新标签,比如在滑动刷新时我需要将新标签添加到左端。

下面是我添加新标签的代码:

pagerAdapter.TABS_COUNT = 4; //global value to change the tabs count
pagerAdapter.notifyDataSetChanged();
pagerSlidingTabStrip.setViewPager(mPager);

但有时其中一个选项卡内容变为空 listview 不可滚动。

实现此目标的最佳方法是什么?

最佳答案

这里有一个例子说明如何做,不要说这是最好的方法,但我写得很匆忙https://github.com/jacktech24/pager-sliding-strip-example

首先,您需要一个自定义适配器,这里我使用了一个简单的适配器,它只在每个 fragment 上显示文本,但很容易修改它以支持普通 fragment 等。示例中的 mTab​​s 是:

mTabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);

然后是例子

private class TestAdapter extends FragmentPagerAdapter {

private ArrayList<String> tabs = new ArrayList<>();

public TestAdapter(FragmentManager supportFragmentManager) {
super(supportFragmentManager);
}

@Override
public Fragment getItem(int position) {
Fragment frag = new ExampleFragment();
Bundle bundle = new Bundle();
bundle.putString("title", (String) getPageTitle(position));
frag.setArguments(bundle);
return frag;
}

@Override
public CharSequence getPageTitle(int position) {
return tabs.get(position);
}

@Override
public int getCount() {
return tabs.size();
}

public void addTab(String tab) {
tabs.add(tab);
notifyDataSetChanged();
mTabs.notifyDataSetChanged();
}

public void removeTab(int position) {
tabs.remove(position);
notifyDataSetChanged();
mTabs.notifyDataSetChanged();
}

}

那么,就这么简单:

    //mAdapter is instance of your adapter
mAdapter.addTab("test 1");
mAdapter.addTab("test 2");
mAdapter.addTab("test 3");


FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.addTab("test "+(mAdapter.getCount()+1));
}
});

关于android - PagerSlidingTabStrip - 在运行时添加新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147074/

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