5

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 から切り離し、クラス内で複数のコピー (複製) を作成する必要があります。

どんな助けでも大歓迎です。

4

3 に答える 3