android如何刷新navigationview的headview内容
How to refresh the headview content of navigationview in android
您好,我在一个演示项目中使用 NavigationView
。我的页眉布局为 NavigationView
。我在运行时获取页眉布局的数据,一旦我获取数据,我就设置视图的值,但数据没有反映或刷新。
((TextView)headerNavigationView.findViewById(R.id.username)).setText(userData.getName());
一旦我们从 Web 服务获取数据,在运行时刷新导航视图的正确方法是什么。
需要尝试如下代码才能从 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());
}
} );
检查 答案。
希望对你有所帮助
我遇到了同样的问题:与 NavigationView Header 的 Android 中的错误相比,这不是您的网络服务等问题。
解决方法是像下面那样以编程方式膨胀 header ...假设您在 header 中有一个名为 "version" 的 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");
NavigationView 的实现最近发生了变化。您无法再进入 NavigationView 以查找特定 ID 的 header。相反,您应该使用 addHeaderView to add a view of your own createion or inflateHeaderView,其中 returns 您正在寻找的视图。
您好,我在一个演示项目中使用 NavigationView
。我的页眉布局为 NavigationView
。我在运行时获取页眉布局的数据,一旦我获取数据,我就设置视图的值,但数据没有反映或刷新。
((TextView)headerNavigationView.findViewById(R.id.username)).setText(userData.getName());
一旦我们从 Web 服务获取数据,在运行时刷新导航视图的正确方法是什么。
需要尝试如下代码才能从 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());
}
} );
检查
希望对你有所帮助
我遇到了同样的问题:与 NavigationView Header 的 Android 中的错误相比,这不是您的网络服务等问题。 解决方法是像下面那样以编程方式膨胀 header ...假设您在 header 中有一个名为 "version" 的 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");
NavigationView 的实现最近发生了变化。您无法再进入 NavigationView 以查找特定 ID 的 header。相反,您应该使用 addHeaderView to add a view of your own createion or inflateHeaderView,其中 returns 您正在寻找的视图。