如何在android中刷新navigationview的headview内容

Posted

技术标签:

【中文标题】如何在android中刷新navigationview的headview内容【英文标题】:How to refresh the headview content of navigationview in android 【发布时间】:2016-01-26 17:52:05 【问题描述】:

您好,我在一个演示项目中使用NavigationView。我的标题布局为NavigationView。我在运行时获取标题布局的数据,一旦获取数据,我将设置视图的值,但不会反映或刷新数据。

((TextView)headerNavigationView.findViewById(R.id.username)).setText(userData.getName());

一旦我们从 Web 服务获取数据,在运行时刷新导航视图的正确方法是什么。

【问题讨论】:

五月this 帮助你。 您是否为 NavigationView 调用了无效? 是的,我试过了,但它不起作用 @pRaNaY 该线程用于不同目的 @Williams 你能把你的代码放一部分吗? 【参考方案1】:

我遇到了同样的问题:与您的 Web 服务等问题相比,它与 android 中带有 NavigationView Header 的错误相比没有那么严重。 解决方法是像下面这样以编程方式膨胀标题...假设您在标题中有一个名为“版本”的 TextView:

NavigationView mNavigationView = (NavigationView) findViewById(R.id.navigation_view);    
View headerLayout = mNavigationView.inflateHeaderView(R.layout.my_header_layout);
// Now you can update the views in your header as you want :
TextView version = (TextView) headerLayout.findViewById(R.id.version);
version.setText("text in my header");

【讨论】:

【参考方案2】:

需要尝试以下代码才能从 Navigationview 获取 View

对于 Android 支持 23.1.0 可以使用addOnLayoutChangeListener。类似的东西:

headerNavigationView.addOnLayoutChangeListener( new View.OnLayoutChangeListener()

    @Override
    public void onLayoutChange( ... )
    
        navigationView.removeOnLayoutChangeListener( this );

        View header = navigationView.getHeaderView(0)
        TextView tvUsername = (TextView) header.findViewById(R.id.R.id.username);
        tvUsername.setText(userData.getName());
    
 );

查看this的答案。

希望对你有帮助。

【讨论】:

我已经这样做了..我的headerNavigationView 是标题视图..我的问题不是如何从导航视图中获取视图..我明白了,但价值没有被刷新跨度> 这与我的问题无关..开始赏金【参考方案3】:

NavigationView 的实现最近发生了变化。您无法再进入 NavigationView 来查找特定 id 的标题。相反,您应该使用addHeaderView 添加您自己创建的视图或inflateHeaderView,它会返回您正在寻找的视图。

【讨论】:

以上是关于如何在android中刷新navigationview的headview内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中获取google plus的刷新令牌?

如何绕过 Firebase 缓存来刷新数据(在 Android 应用中)?

知道如何防止 Android Widget 中显示的列表视图在每次刷新数据时闪烁吗?

Android中View如何刷新

Android:在哪里以及如何自动刷新列表视图(我有刷新功能)

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能