選択した言語に応じて動的に変更できるを含むListView
フッターがあります。別の言語を選択すると、アイテム
が更新されます。View
TextView
ListView
mBaseAdapter.updateItems(items);
BaseAdapter :
public void updateItems(List<Map.Entry<Integer, String>> items) {
mItemsResIdList = new ArrayList<>(items);
notifyDataSetChanged();
}
フッターを更新するために、私はこれを行っていました:
mListViewFooter.invalidate();
これは機能しませんでした。テキストは変更されませんでした。ただし、を次のものに置き換えると機能invalidate();
します。
((TextView)mListViewFooter.findViewById(R.id.myTextView)).setText(R.string.myCopy);
注: 私のListView
要素はTextViews
、選択した言語に従って翻訳されたものであり、数を増減することもできます。View
フッターが変更されることはありません。テキストが翻訳されるように更新したいだけです(正しいvalue-(lang)/strings.xmlが選択されます)。
私の質問は、最初のアプローチが機能しないのはなぜですか? 私が考えることができる唯一の説明は、 は再度invalidate();
呼び出さずsetText()
、 を再描画するだけだということView
です。ListView
アダプターが再度読み込まgetView()
れる場所で再度呼び出すため、で機能しましTextViews
た。この仮定は正しいですか?
ありがとう。