我正在创建一个具有多语言支持的Android应用程序.目前它支持超过15种不同的语言.到目前为止一切都很好.
但现在要求是将英语与阿拉伯语混合.我有一个ListView来呈现值的ArrayList.ArrayList几乎没有阿拉伯文本,很少有英文元素.
阿拉伯语在应用程序中显得很好.但英文行未显示在TextView上.它将被打印在日志中.
编辑-1 它在android 2.3中显得很好.所以,我的估计RTL可能会导致问题.
编辑-2 以下是该应用程序的屏幕截图.正如您在右侧看到的,有些行是白色的.
在右侧的行中,一些数据将从SQLite数据库中获取,一些数据将从Web获取.从Web获取的数据是阿拉伯语,但SQLite数据是英语.
适配器getView()方法工作正常.在getView()内部,打印英语和阿拉伯语的数据.我甚至在将文本设置到列表行后打印getText(),getText()甚至用英语打印.看起来英文行没有打印或更新.

任何帮助深表感谢.
这是ListView渲染问题上非常奇怪的观察之一.我正在初始化适配器,只有它是空的,所做的任何更改或刷新都是使用notifyDataSetChanged().但它导致渲染延迟.
if (mOptionsAdapter == null) {
mOptionsAdapter = new CategoriesAdapter(mContext);
final ArrayList<CategoriesItem> optionsList = getData();
mOptionsAdapter.setDatasource(optionsList);
mOptionsyListView.setAdapter(mOptionsAdapter);
mOptionsAdapter.notifyDataSetChanged();
} else {
mOptionsAdapter = new CategoriesAdapter(mContext);
final ArrayList<CategoriesItem> optionsList = getData();
mOptionsyListView.setAdapter(mOptionsAdapter);
mOptionsAdapter.setDatasource(optionsList);
mOptionsAdapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
更改为,每次使适配器无效并重新创建再次解决了问题.
mOptionsAdapter = null;
mOptionsAdapter = new CategoriesAdapter(mContext);
final ArrayList<CategoriesItem> optionsList = getData();
mOptionsAdapter.setDatasource(optionsList);
mOptionsyListView.setAdapter(mOptionsAdapter);
mOptionsAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
我不太确定,但我相信随着Android 4.0提供的RTL支持.它不是很稳定并导致渲染问题.幸运谷歌已经在4.2中修复了它,并且效果很好.
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |