2

こんにちはNavigationView、デモ プロジェクトの 1 つを使用しています。のヘッダーレイアウトがありNavigationViewます。実行時にヘッダー レイアウトのデータを取得しています。データを取得したら、ビューの値を設定していますが、データが反映または更新されません。

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

Web サービスからデータを取得したら、実行時にナビゲーション ビューを更新する正しい方法は何ですか。

4

3 に答える 3

1

ViewNavigationviewから取得するには、以下のようなコードを試す必要があります。

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());
    }
} );

この回答を確認してください。

お役に立てば幸いです。

于 2016-01-26T18:06:45.160 に答える
0

NavigationView の実装が最近変更されました。NavigationView にアクセスして、特定の ID のヘッダーを見つけることはできなくなりました。代わりに、 addHeaderViewを使用して独自の作成のビューを追加するか、探しているビューを返すinflateHeaderViewを使用する必要があります。

于 2016-02-07T23:41:11.923 に答える