只有重新启动的孩子,而不是所有的树

时间:2012-04-12 10:24:35

标签: android layout

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

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

在滚动期间,我正在重复使用ghost子视图并为当前项设置属性。 它工作正常,因为我使用View.offsetTopAndBottom()invalidate()而不是在滚动期间请求布局进行优化。

我的问题是更新孩子(RelativeLayout)。

取决于商品,我想在此商品上隐藏或显示ImageView。为此,我只使用iconImage.setVisibility( GONE )iconImage.setVisibility( VISIBLE )

由于我阻止requestLayout,似乎setVisibility()无效。

如果我使用requestLayout,那么所有树都会测量和布局自身,这对滚动用户体验来说不是一个好方法。

是否有办法仅对回收子项目请求布局?

1 个答案:

答案 0 :(得分:-2)

您需要通过更改视图通知listView,因此请从Uithread调用notifyDataSetChanged();,如下所示:

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