我正在尝试重新创建ListView
(和AbsListView
)逻辑,并使用视图回收。
我需要这个,但我们可以说这只是为了理解Android逻辑。
假设我的孩子项目相同(相同的布局),使用固定高度RelativeLayout
。
在滚动期间,我正在重复使用ghost子视图并为当前项设置属性。
它工作正常,因为我使用View.offsetTopAndBottom()
和invalidate()
而不是在滚动期间请求布局进行优化。
我的问题是更新孩子(RelativeLayout
)。
取决于商品,我想在此商品上隐藏或显示ImageView
。为此,我只使用iconImage.setVisibility( GONE )
和iconImage.setVisibility( VISIBLE )
。
由于我阻止requestLayout
,似乎setVisibility()
无效。
如果我使用requestLayout
,那么所有树都会测量和布局自身,这对滚动用户体验来说不是一个好方法。
是否有办法仅对回收子项目请求布局?
答案 0 :(得分:-2)
您需要通过更改视图通知listView,因此请从Uithread调用notifyDataSetChanged();
,如下所示:
final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter());
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});