android sliding tab,android – 刷新SlidingTabLayout
图片中的示例:
>清空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相关推荐
- android preference tab,Android SharedPreference - TabHost问题
我正在开发Android应用程序,它有两个不同的tabhost:Main和Child. 在主tabhost我有5个不同的标签,最后一个打开新的活动,我有登录页面.我想创建一个布尔类型isLoggedI ...
- android 微博tab,Android实现新浪微博客户端tab时遇到bug、
问题解决了.详细看回答一楼.. 但是有一个新的问题出现了,那就是在对RadioGroup设置onTouchListener监听器的时候,一直触发不了事件..是因为RadioGroup设置不了触摸监听器 ...
- android 上划卡住tab_Android SlidingTabLayout用法禁止ViewPager滑动
Android 提供的API例子程序中有个自定义View,SlidingTabLayout+SlidingTabStrip,两者结合构造完美可滑动Tab 主要代码 import android.os. ...
- Android 动态Tab分页效果实现
当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在的 ...
- 【Android 界面效果22】Android的Tab与TabHost
Tab与TabHost 这就是Tab,而盛放Tab的容器就是TabHost 如何实现?? 每一个Tab还对应了一个布局,这个就有点好玩了.一个Activity,对应了多个功能布局. ①新建一个Tab项 ...
- Android: 自定义Tab样式
1.制作4个9patch的tab样式,可参考android默认的资源 tab_unselected.9.png tab_selected.9.pngtab_press.9.pngtab_focus.9 ...
- android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
一.ViewPageIndicator开源框架的基本用法我们先得去Github上面下载这个库,下载地址:https://github.com/JakeWharton/Android-ViewPager ...
- android Android-PullToRefresh 下拉刷新
1.github下载地址 原作者: https://github.com/chrisbanes/Android-PullToRefresh 我自己的: https://github.com/zyj ...
- Android 动态Tab分页效果
当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4 个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在 ...
最新文章
- NC:潮湿的墙体和家具中微生物迅速增长!
- python学生管理系统-学生管理系统python
- Bootstrap4+MySQL前后端综合实训-Day10-AM【实训汇报-下午返校、项目代码(7个包+7个Html页面)】
- Redis 数据同步机制分析
- 多边形三角剖分问题的综述
- 关于DruidStatView监控信息
- 服务器与客户端连接 聊天机器人
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg
- Struts学习笔记--导航
- MySQL两个字段都建立索引 使用情况
- vue-admin自定义后台管理系统(二)之vue-cli3创建前端项目
- 创建和使用视图及异名
- 算法:Reverse Words in a String(翻转字符串里的单词)
- 晶闸管触发电路的基本要求
- 特斯拉-数据分析师-SQL笔试题
- 中标麒麟neokylin linux advanced server 7update6 GUI server安装配置pyqt5运行环境说明
- Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
- 微信PC端技术研究(2)-拿下语音
- python爬取芒果TV《乘风破浪的姐姐》弹幕数据(已完成)
- 7、MyBatis分页