我被困住了,我无法在任何地方找到解决方案。:(
我的 ListView ( GridView ) 的每个项目的布局中有一个 ImageView,由 BaseAdapter 提供。加载图像时,我使用将加载的 BitmapDrawable 分配给 ImageView
imageView.setImageDrawable( newImage );
该项目弹出没有任何问题。
但是,如果我通过使用 TransitionDrawable 或通过分配一个简单的动画来分配新的 BitmapDrawable:
//this is inoperative - animation will not start for currently displayed items! No solution found :(
Animation a = LibResource.getResourceAnimation( activity, R.anim.fade_in );
imageView.setImageDrawable( newImage );
imageView.startAnimation( a );
对于我的 GridView 的当前显示的项目,动画将不会启动。如果我向下滚动 GridView 并将其滚动回提到的项目,则会显示图像并执行动画!
我已经尝试过以下修复:
imageView.invalidateDrawable( newImage );
imageView.invalidate();
在分配动画后,我还尝试了以下语句 - 当然,我在 UI 线程上调用了它们,在 UI 线程上分配和启动动画之后:
myGridView.invalidate();
myGridView.invalidateViews();
myGridView.getAdapter().notifyDataSetChanged();
如前所述,此问题仅发生在我的 ListView 中的可见项目中。
为什么即使在所有涉及的视图上调用 invalidate() 等之后,Animation 或 TransitionDrawable 也不会启动?
问题出现在我的 XPeria-Arc-S (API-Level 10) 和 Android-Emulators API-Level 8,9,10 中。这是 Android 系统中的错误吗?
任何帮助将不胜感激!
提前致谢
克里斯托弗
好的 - 感谢您的快速回复。
我遇到了问题,经过大量时间重组我的代码结构以使其正常工作,我发现这并没有解决我的问题:(。
除此之外,在创建视图时更改内容对我来说不适用或非常实用。也许您对此问题有任何其他解决方案?
真挚地
克里斯托弗