Android 只重新播放孩子,而不是所有的树

Android 只重新播放孩子,而不是所有的树,android,layout,Android,Layout,我正在尝试重新创建ListView(和AbsListView)逻辑,并使用视图循环。 我需要这个,但我们可以说这只是为了理解Android逻辑 假设我的子项相同(相同布局),使用固定高度RelativeLayout 在滚动期间,我将重用ghost children视图并为当前项设置属性。 它工作得很好,因为我使用的是View.offsetTopAndBottom()和invalidate()而不是在滚动优化期间请求布局 我的问题是更新子项(RelativeLayout) 根据项目的不同,我想在此

我正在尝试重新创建
ListView
(和
AbsListView
)逻辑,并使用视图循环。 我需要这个,但我们可以说这只是为了理解Android逻辑

假设我的子项相同(相同布局),使用固定高度
RelativeLayout

在滚动期间,我将重用ghost children视图并为当前项设置属性。 它工作得很好,因为我使用的是
View.offsetTopAndBottom()
invalidate()
而不是在滚动优化期间请求布局

我的问题是更新子项(
RelativeLayout

根据项目的不同,我想在此项目上隐藏或显示
ImageView
。为此,我只使用了
iconImage.setVisibility(消失)
iconImage.setVisibility(可见)

由于我正在阻止
requestLayout
,因此似乎
setVisibility()
无法正常工作

如果我使用
requestLayout
,所有的树都会测量和布局本身,这不是一个滚动用户体验的好方法


是否有一种方法可以仅在回收子项上进行请求布局?

您需要通知listView更改了视图,因此调用
notifyDataSetChanged()来自Uithread,如下所示:

        final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter());
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adapter.notifyDataSetChanged();
        }
    });