ViewGroup を拡張して GridView のビュー項目を配置するクラスに取り組んでいます。
次の方法で、その中に新しいビュー項目を簡単に追加できます。
ImageView view = new ImageView(context);
view.setImageBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher));
addView(view);
またはビューアイテムの削除も簡単です
removeViewAt(remove_index)
アイテムの交換は次の方法で行うことができます
addView(new_index, removeViewAt(old_index));
しかし、あるアイテムが別のアイテムの上にドラッグされたときに、ビューアイテムを複製したいと考えています。アイテムを複製しようとしました
addView(getChildAt(index))
そして、これは例外エラーを示しています
指定された子にはすでに親がいます。最初に子の親で removeView() を呼び出す必要があります
また、メソッド removeAllView() を呼び出して、リストにすべてのビュー項目を保存しようとし、再びクラスにビューを追加しました。
ArrayList<View> children = new ArrayList<View>();
for (int i = 0; i < getChildCount(); i++){
children.add(getChildAt(i));
}
children.add(getChildAt(index)); // duplicate this item
removeAllViews();
for (int i = 0; i < children.size(); i++){
addView(children.get(i));
}
これでも上記の例外エラーが表示されます。
ビューの膨張は機能する可能性がありますが、外部リソースを使用せずに同じビューをコピーしたいと考えています。
したがって、メソッドでその View を親 ViewGroup から切り離し、クラス内で複数のコピー (複製) を作成する必要があります。
どんな助けでも大歓迎です。