7

いくつかのラベルとビューを動的に生成するアプリを構築しています。「カスタムビュー」がxmlレイアウトでどのように表示されるかを定義し、コードからこのレイアウトを拡張します。

膨らんだレイアウトは常に同じなので、このステップを1回だけ行います。レイアウトができたら、キャッシュして、次に必要になったときに使用したいと思います。

問題は、膨らんだレイアウトを(例としてハッシュマップで)キャッシュに入れて親レイアウトに追加した場合、次にそれを追加しようとしたときに(今回はキャッシュからレイアウトを取得します)、システムが言うことです私のレイアウトにはすでに親があります。

子ビューを削除せずに子ビューを親から切り離す方法を知っていますか?

いくつかのコードを追加しました:

    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);
4

1 に答える 1

12

実際にこれを行うことはできません。私はあなたのコメントを引用しています

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解析を受けません(あなたがそう思う場合に備えて)、それはコンパイルされたコードであり、したがって、あなたの見解のコピーは無意味です。

結論:インフレに固執する。

于 2012-08-31T08:38:39.060 に答える