- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
图片示例:
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<TongueTwister> data = TongueTwistersStorageManager.getInstance().getData();
private final ArrayList<Character> 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<Character> generateCharList() {
Log.i(TAG, "Generating char list...");
Log.i(TAG, "Total tongue twisters: " + data.size());
HashSet<Character> 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<Character> 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()
对我不起作用)
最佳答案
找到解决方案!只需在更新其适配器后设置 ViewPager
:
tabsAdapter.updateCharSet(); // Updating FragmentPagerAdapter
tabsAdapter.notifyDataSetChanged();
slidingTabLayout.setViewPager(viewPager); // Updating SlidingTabStrip
关于android - 刷新 SlidingTabLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30003284/
使用 Google 的 SlidingTabLayout如何以编程方式更改选定的选项卡? 最佳答案 @Bind(R.id.pager) ViewPager mViewPager; @Bind(R.id
我正在使用 SlidingTabLayout 类在我的 Android 应用程序中显示标签。 我正在使用我使用 setCustomTabView 函数设置的自定义选项卡 View 。虽然我可以轻松自定
我想在 SlidingTabLayout 中实现子标签。 我搜索了很多,但我没有找到类似的东西。 有没有人有实现此方案的解决方案或建议? 谢谢。 最佳答案 有一个非常简单的方法。您可以将主选项卡与 v
图片示例: 清空 PagerView PagerView 有新内容(SlidingTabLayout 不更新) View 的新实例(SlidingTabLayout 已更新); 这是我的代码: pub
我正在尝试更改(https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/S
在我将我的应用程序移动到 5.0 后,我不得不从基本选项卡移动到谷歌开发人员的 slidingTabLayout provides . 问题是,我不知道如何让两个按钮都像旧按钮一样居中。顺便说一句,我
我搜索了很多有关如何使用 SlidingTabLayout 在 fragment 之间进行通信的信息,但没有真正找到好的答案。我知道使用 ActionBar,但我想要使用 SlidingTabLayo
我有一个带有图像的折叠工具栏,向上滚动时它应该移动到顶部。在此之后我想要一个 SlidingTabLayout,它有不同的选项卡并且它必须跟随折叠工具栏。 当工具栏折叠时,布局将仅显示折叠模式下的工具
我尝试在我的应用程序中实现 SlidingTabLayout。遗憾的是它没有在滑动选项卡中显示标题。我需要在选项卡中显示我的 Activity 的标题(稍后在图标中)。我可以知道该怎么做吗?我对 An
我正在尝试向预构建的 Android 应用程序添加一些功能,其中之一是以编程方式更改应用程序语言。 我为更改应用程序的资源所做的是:在 onCreate 中为每个 Activity 执行此代码:
我的 SlidingTabLayout 的大小有问题。我有该功能,如果需要,将在滚动时调整大小,在这种情况下,我不希望我的 SlidingTabLayout 调整大小,我希望它像下面这样小:- 这是它
我在我的 View 中使用谷歌的 SlidingTabLayout,但我想向它动态添加新标签。我正在使用这个 http://developer.android.com/samples/SlidingT
请问是否可以更改 SlidingTablayout 中标签指示器的颜色?我必须使用 developer.android.com 的 SlidingTabsColors 吗?我只想更改另一种颜色而不是默
我正在使用来自开发人员 android 页面的 SlidingTabLayout.java。在我使用 slidingTabLayout.setDistributeEvenly(true); 使 sli
我正在我的 android 应用程序中实现一个 SlidingTabLayout。我的查询是我想在我的滑动选项卡中实现图标而不是导航文本。我在互联网上大量搜索任何此类教程或示例,但没有找到。我还在st
我正在使用来自 google (https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.commo
我将使用以下名为 ObservableScrollView 的库来处理带有滑动选项卡的抽屉导航 https://github.com/ksoichiro/Android-ObservableScrol
我是一名有抱负的 Android 开发人员,没有太多经验,而且对这个领域还很陌生。最近,我一直对在我的第一个(即将发布的)应用程序中实现 Material 设计功能很感兴趣,特别是 SlidingTa
我正在使用带有 View 寻呼机的滑动标签布局。我的滑动标签布局条显示了很多项目,数字从 10 到 200。 下面的图片完整地描述了我的问题:首先是它是如何工作的,第二张图片显示了我遇到的问题。 第一
我已经在我的应用程序上实现了 SlidingTabLayout,遵循 https://github.com/google/iosched/blob/master/android/src/main/ja
我是一名优秀的程序员,十分优秀!