繁体   English   中英

如何动态更新视图寻呼机项目TITLE

[英]How to update view pager item TITLE dynamically

我有一个简单的消息应用程序模块。 其中,有两个可切换的标签。 收到并发送。 让我们说我有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";
    }
}

我使用Pager Sliding Tab Strip作为寻呼机标签库。 https://github.com/astuetz/PagerSlidingTabStrip

我尝试过使用notifyDataSetChanged(),但由于显而易见的原因,它没有调用它。 任何解决问题的方法。 任何更好的替代方案,以显示和更新计数也是受欢迎的。

谢谢。

只是猜测没有看到你的其余代码。

notifyDataSetChanged()应该工作,但有一个技巧。 您必须覆盖适配器中的一个方法:

public int getItemPosition(Object item) {
    return POSITION_NONE;
}

这样调用notifyDataSetChanged()将更新当前可见页面及其邻居。

没有它,只会更新新页面。

更新

我看了一下链接库。 有一个公共方法notifyDataSetChanged()就像适配器一样。 因此,只需在XML中为该PagerSlidingTabStrip分配一个id,并在代码中获取一个引用。 然后打电话:

adapter.notifyDataSetChanged();
tabStrip.notifyDataSetChanged();

接受的答案对我来说不起作用,使用自定义PagerAdapterandroid.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));
        }
    }
}

使用PagerTabStrip

我只是从适配器的InstantiateItem方法内部调用

this.GetPageTitleFormatted(position);

和voilá一起工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM