我正在构建一个动态生成一些标签和视图的应用。 我定义了我的“自定义视图”应该在xml布局中看起来如何,并且从代码我膨胀这个布局。
因为膨胀的布局总是一样的,所以我只想做一次这个步骤。 在我有布局之后,我想缓存它并在下次需要时使用它。
问题在于,如果我将我的膨胀布局放在缓存中(通过示例在hashmap中)并将其添加到父布局,下次当我尝试再次添加它时(这次我将从缓存中获取布局)系统说我的布局已经有了父母。
您是否知道在不删除子视图的情况下从父项分离子视图的任何方法?
添加了一些代码:
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);
答案 0 :(得分:11)
你实际上无法做到这一点。我引用你的评论
I want to do it in this way because is no point to re-inflate the same view which was already inflated. As an example I have to show 5 textboxes which have the same layout but different content.
每次都需要充气,因为您需要此文本框的5个不同实例。如果您不想膨胀,您应该找到一种方法来复制已经创建的布局,这将无法提高,因为复制也是“代价高昂”。
事实上,只是为了说清楚,膨胀视图不会进行XML解析(以防万一你这么认为),它是编译代码,因此,努力实现一种方式创建一个你的视图副本是没有意义的。
底线:坚持通货膨胀。