8

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

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

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

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

取决于项目,我想隐藏或显示ImageView这个项目。为此,我只是使用iconImage.setVisibility( GONE )and iconImage.setVisibility( VISIBLE )

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

如果我使用requestLayout,所有树都将自行测量和布局,这不是滚动用户体验的好方法。

有没有办法只在回收子项上请求布局?

4

1 回答 1

-2

您需要通过更改视图通知您的 listView,因此notifyDataSetChanged();像这样从 Uithread 调用:

        final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter());
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adapter.notifyDataSetChanged();
        }
    });
于 2013-09-12T10:08:31.110 回答