gpt4 book ai didi

android - 如何在 Android 中缓存 View ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:56 24 4
gpt4 key购买 nike

我正在构建一个动态生成一些标签和 View 的应用程序。 我定义了我的“自定义 View ”在 xml 布局中的外观,并从代码中扩展了该布局。

因为膨胀后的布局总是一样的,所以我只想做一次这个步骤。 有了布局后,我想缓存它并在下次需要时使用它。

问题是,如果我将膨胀的布局放入缓存中(例如在 HashMap 中)并将其添加到父布局,下次我尝试再次添加它时(这次我将从缓存中获取布局)系统说我的布局已经有父级了。

您知道在不移除 subview 的情况下将 subview 与父 View 分离的方法吗?

添加了一些代码:

    private static HashMap<String, LinearLayout> mComponentsCache;

// inflate and add the layout in cache
layout = (LinearLayout)mLf.inflate(R.layout.form_textbox, mHolder, false);
mComponentsCache.put(FormFieldType.TYPE_TEXT, layout);

最佳答案

你实际上不能这样做。我引用你的评论

我想以这种方式进行,因为没有必要重新膨胀已经膨胀的相同 View 。例如,我必须显示 5 个布局相同但内容不同的文本框。

您每次都必须膨胀,因为您需要此文本框的 5 个不同实例。如果你不想膨胀,你应该找到一种方法来复制已经创建的布局,这无助于改进,因为复制也是“昂贵的”。

事实上,为了清楚起见,膨胀 View 不会进行 XML 解析(以防万一你这么认为),它是编译代码,因此,努力实现一种方式创建 View 的副本毫无意义。

底线:坚持通货膨胀。

关于android - 如何在 Android 中缓存 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com