我正在尝试用视图回收重新创建ListView
(和AbsListView
)逻辑。
我需要这个,但我们可以说这只是为了理解安卓逻辑。
假设我的子项是相同的(相同的布局),使用固定高度RelativeLayout
。
在滚动期间,我正在重用ghost子视图并为当前项设置属性。
它工作正常,因为我使用View.offsetTopAndBottom()
和invalidate()
而不是在滚动优化期间请求布局。
我的问题是更新孩子们(RelativeLayout
)。
根据项目,我想隐藏或显示此项目的ImageView
。为此,我只使用iconImage.setVisibility( GONE )
和iconImage.setVisibility( VISIBLE )
。
因为我阻塞了requestLayout
,所以它似乎不能正常工作。
如果我使用setVisibility()
,所有的树都将测量和布局本身,这不是滚动用户体验的好方法。
是否有方法只对回收子项进行请求布局?
最佳答案
您需要用视图更改通知listview,因此从uithread调用notifyDataSetChanged();
,如下所示:
final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter());
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});