Bha*_*eri 10 android android-viewpager fragmentpageradapter pagerslidingtabstrip
我有一个简单的消息应用程序模块.其中,有两个可切换的标签.收到并发送.让我们说我有20条消息,其中10条未读.所以我正在做的是将标签显示为已接收 - (10).现在,当我阅读消息时,它将消息标记为已读.所以我想将标题从Received - (10)更改为Received - (9).
请让我知道我该怎么办?
这是我正在使用的代码.
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0) {
// if position is zero, set the title to RECEIVED.
return "Received" + " (" + String.valueOf(intUnreadReceivedMessagesCount) + ")";
} else {
// if position is 1, set the title to SENT.
return "Sent";
}
}
Run Code Online (Sandbox Code Playgroud)
我使用Pager Sliding Tab Strip作为寻呼机标签库.https://github.com/astuetz/PagerSlidingTabStrip
我尝试过使用notifyDataSetChanged(),但由于显而易见的原因,它没有调用它.任何解决问题的方法.任何更好的替代方案,以显示和更新计数也是受欢迎的.
谢谢.
Dam*_*tla 15
只是猜测没有看到你的其余代码.
notifyDataSetChanged()应该工作,但有一个技巧.您必须覆盖适配器中的一个方法:
public int getItemPosition(Object item) {
return POSITION_NONE;
}
Run Code Online (Sandbox Code Playgroud)
这样调用notifyDataSetChanged()将更新当前可见页面及其邻居.
没有它,只会更新新页面.
更新
我看了一下链接库.有一个公共方法notifyDataSetChanged()就像适配器一样.因此,只需为PagerSlidingTabStripXML内部分配一个id,并在代码中获取引用.然后打电话:
adapter.notifyDataSetChanged();
tabStrip.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
接受的答案对我来说不起作用,使用自定义PagerAdapter和android.support.design.widget.TabLayout标签.
这对我有用:
private void refreshTabTitles() {
for (int i = 0; i < adapter.getCount(); i++) {
Tab tab = tabs.getTabAt(i);
if (tab != null) {
tab.setText(adapter.getPageTitle(i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10360 次 |
| 最近记录: |