您好,我NavigationView
在一个演示项目中使用。我的标题布局为NavigationView
. 我在运行时获取标题布局的数据,一旦获取数据,我将设置视图的值,但不会反映或刷新数据。
((TextView)headerNavigationView.findViewById(R.id.username)).setText(userData.getName());
一旦我们从 Web 服务获取数据,在运行时刷新导航视图的正确方法是什么。
您好,我NavigationView
在一个演示项目中使用。我的标题布局为NavigationView
. 我在运行时获取标题布局的数据,一旦获取数据,我将设置视图的值,但不会反映或刷新数据。
((TextView)headerNavigationView.findViewById(R.id.username)).setText(userData.getName());
一旦我们从 Web 服务获取数据,在运行时刷新导航视图的正确方法是什么。
我遇到了同样的问题:与您的 web 服务等问题相比,与 NavigationView Header 的 Android 中的错误相比,这并不是什么大问题。解决方法是像下面这样以编程方式膨胀标题...假设您在标题中有一个名为“版本”的 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");
需要尝试如下代码才能View
从 Navigationview 获取。
对于 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 的实现最近发生了变化。您无法再进入 NavigationView 来查找特定 id 的标题。相反,您应该使用addHeaderView添加您自己创建的视图或inflateHeaderView,它会返回您正在寻找的视图。