如何在Android中缓存视图?

我正在构建一个动态生成一些标签和视图的应用程序.
我定义了我的“自定义视图”应该在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);

解决方法

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

我想以这种方式这样做,因为没有必要重新膨胀已经膨胀的相同视图.作为一个例子,我必须显示5个具有相同布局但内容不同的文本框.

您每次都必须充气,因为您需要此文本框的5个不同实例.如果您不想膨胀,您应该找到一种方法来复制已经创建的布局,这将无法提高,因为复制也是“代价高昂”.

事实上,只是为了说清楚,膨胀视图不会进行XML解析(以防万一你这么认为),它是编译代码,因此,努力实现创建一个方法你的观点副本毫无意义.

底线:坚持通货膨胀.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...