图片中的示例:

>清空PagerView

>具有新内容的PagerView(SlidingTabLayout不更新)

>新的视图实例(SlidingTabLayout已更新);

这是我的代码:

public class CharSortFragment extends Fragment {

private final String TAG = "CharSortFragment";

private ViewPager viewPager;

private TabsPagerAdapter tabsAdapter;

private SlidingTabLayout slidingTabLayout;

private FragmentActivity activity;

public CharSortFragment() {}

@Override

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

Log.d(TAG,"OnCreate view...");

final View view = inflater.inflate(R.layout.char_sort_fragment,container,false);

activity = getActivity();

Log.d(TAG,"Init add button...");

FloatingActionButton addButton = (FloatingActionButton) view.findViewById(R.id.add_button);

addButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Log.d(TAG,"Add button was clicked...");

startActivityForResult(new Intent(getActivity(),EditActivity.class),1);

}

});

viewPager = (ViewPager) view.findViewById(R.id.pager);

tabsAdapter = new TabsPagerAdapter(activity.getSupportFragmentManager());

viewPager.setAdapter(tabsAdapter);

Log.d(TAG,"Connecting PagerSlidingTabStrip...");

slidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.tabs);

slidingTabLayout.setViewPager(viewPager);

Log.d(TAG,"OnCreate finished!");

return view;

}

@Override

public void onActivityResult(int requestCode,int resultCode,Intent data) {

Log.d(TAG,"On activity result: " + resultCode);

if(resultCode == 1) {

Log.d(TAG,"Notify data changes...");

tabsAdapter.updateCharSet();

tabsAdapter.notifyDataSetChanged();

slidingTabLayout.invalidate();

CardListFragment cardListFragment = tabsAdapter.currentFragment;

/* Обновляем TabsAdapter всегда,ибо я ленивая жопа

if(tabsAdapter.currentFragment == null) {

tabsAdapter.updateCharSet();

tabsAdapter.notifyDataSetChanged();

cardListFragment = tabsAdapter.currentFragment;

}

*/

RecyclerViewAdapter recyclerViewAdapter = cardListFragment.getAdapter();

recyclerViewAdapter.updateDataSet();

recyclerViewAdapter.notifyDataSetChanged();

Log.d(TAG,"Views was notified!");

}

}

public class TabsPagerAdapter extends FragmentPagerAdapter {

private final String TAG = "TabsPagerAdapter";

private final HashSet data = TongueTwistersStorageManager.getInstance().getData();

private final ArrayList characters = new ArrayList<>();

private CardListFragment currentFragment;

public TabsPagerAdapter(FragmentManager fm) {

super(fm);

Log.i(TAG,"Creating TabsPagerAdapter...");

updateCharSet();

}

@Override

public Fragment getItem(int position) {

char charAtCurrentPos = characters.get(position);

return CardListFragment.newInstance(charAtCurrentPos);

}

protected void updateCharSet() {

this.characters.clear();

this.characters.addAll(generateCharList());

}

private ArrayList generateCharList() {

Log.i(TAG,"Generating char list...");

Log.i(TAG,"Total tongue twisters: " + data.size());

HashSet hashCharacters = new HashSet<>();

for (TongueTwister tongueTwister : data) {

for(char character : tongueTwister.getCharacters()) {

if(!hashCharacters.contains(character)) {

Log.i(TAG,"Char: " + character);

hashCharacters.add(character);

}

}

}

Log.i(TAG,"Sorting...");

ArrayList characters = new ArrayList<>(hashCharacters);

Collections.sort(characters);

Log.i(TAG,"Char list was generated!");

return characters;

}

@Override

public int getCount() {

return characters.size();

}

@Override

public CharSequence getPageTitle(int position) {

return String.valueOf(characters.get(position));

}

@Override

public void setPrimaryItem(ViewGroup container,int position,Object object) {

currentFragment = (CardListFragment) object;

}

}

}

我该如何刷新SlidingTabLayout? (slidingTabLayout.invalidate()对我不起作用)

android sliding tab,android – 刷新SlidingTabLayout相关推荐

  1. android preference tab,Android SharedPreference - TabHost问题

    我正在开发Android应用程序,它有两个不同的tabhost:Main和Child. 在主tabhost我有5个不同的标签,最后一个打开新的活动,我有登录页面.我想创建一个布尔类型isLoggedI ...

  2. android 微博tab,Android实现新浪微博客户端tab时遇到bug、

    问题解决了.详细看回答一楼.. 但是有一个新的问题出现了,那就是在对RadioGroup设置onTouchListener监听器的时候,一直触发不了事件..是因为RadioGroup设置不了触摸监听器 ...

  3. android 上划卡住tab_Android SlidingTabLayout用法禁止ViewPager滑动

    Android 提供的API例子程序中有个自定义View,SlidingTabLayout+SlidingTabStrip,两者结合构造完美可滑动Tab 主要代码 import android.os. ...

  4. Android 动态Tab分页效果实现

    当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在的 ...

  5. 【Android 界面效果22】Android的Tab与TabHost

    Tab与TabHost 这就是Tab,而盛放Tab的容器就是TabHost 如何实现?? 每一个Tab还对应了一个布局,这个就有点好玩了.一个Activity,对应了多个功能布局. ①新建一个Tab项 ...

  6. Android: 自定义Tab样式

    1.制作4个9patch的tab样式,可参考android默认的资源 tab_unselected.9.png tab_selected.9.pngtab_press.9.pngtab_focus.9 ...

  7. android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...

    一.ViewPageIndicator开源框架的基本用法我们先得去Github上面下载这个库,下载地址:https://github.com/JakeWharton/Android-ViewPager ...

  8. android Android-PullToRefresh 下拉刷新

    1.github下载地址 原作者:  https://github.com/chrisbanes/Android-PullToRefresh 我自己的:  https://github.com/zyj ...

  9. Android 动态Tab分页效果

    当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4 个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在 ...

最新文章

  1. NC:潮湿的墙体和家具中微生物迅速增长!
  2. python学生管理系统-学生管理系统python
  3. Bootstrap4+MySQL前后端综合实训-Day10-AM【实训汇报-下午返校、项目代码(7个包+7个Html页面)】
  4. Redis 数据同步机制分析
  5. 多边形三角剖分问题的综述
  6. 关于DruidStatView监控信息
  7. 服务器与客户端连接 聊天机器人
  8. linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg
  9. Struts学习笔记--导航
  10. MySQL两个字段都建立索引 使用情况
  11. vue-admin自定义后台管理系统(二)之vue-cli3创建前端项目
  12. 创建和使用视图及异名
  13. 算法:Reverse Words in a String(翻转字符串里的单词)
  14. 晶闸管触发电路的基本要求
  15. 特斯拉-数据分析师-SQL笔试题
  16. 中标麒麟neokylin linux advanced server 7update6 GUI server安装配置pyqt5运行环境说明
  17. Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
  18. 微信PC端技术研究(2)-拿下语音
  19. python爬取芒果TV《乘风破浪的姐姐》弹幕数据(已完成)
  20. 7、MyBatis分页

热门文章

  1. 装完sql后修改计算机名后不能进行发布的订阅的解决办法
  2. javascript实现缩略图
  3. 基于XFS的NAS数据恢复可以做了
  4. 文化创意企业纷纷跨界融合,软件资产管理奠定安全基础
  5. 使用bat文件实现批量重命名功能
  6. 谷歌地图API位置请求_Google Maps API
  7. Android开发问题集锦
  8. Fedora下如何删除以前的老内核
  9. PC厂商如何演化移动互联网市场格局?
  10. linux下新文件权限设置之umask的理解