我有ListView
一个页脚View
,其中包含一个TextView
可以根据所选语言动态更改的页脚。
当我选择不同的语言时,我会更新我的ListView
项目:
mBaseAdapter.updateItems(items);
基础适配器:
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
更新以便翻译文本(选择正确的值-(lang)/strings.xml)。
我的问题是,为什么第一种方法不起作用?我能想到的唯一解释是invalidate();
不会setText()
再次调用,它只会重绘View
. 它适用于,ListView
因为适配器再次调用getView()
再次TextViews
填充的地方。这个假设正确吗?
谢谢。