親として垂直方向のLinearLayoutがありますが、この親にプログラムで複数のビューを何度も追加したいと思います。今は、親に追加する前に、すべてのUI要素に新しい参照が追加されるたびに子供を膨らませています。これは非常に効率的ではないようですが、これを行うためのよりよい方法があります。同じビューを親に複数回追加する方法
私が使用しているコードは以下の通りです。forループの前に一度だけ膨張させた場合、実行時エラー "指定した子が既に親を持っています。
LayoutInflater inflator = LayoutInflater.from(getBaseContext());
LinearLayout parentPanel = findViewById(R.id.parent_pannel);
ArrayList<String> myList = getData();
for(String data : myList) {
// inflate child
View item = inflator.inflate(R.layout.list_item, null);
// initialize review UI
TextView dataText = (TextView) item.findViewById(R.id.data);
// set data
dataText.setText(data);
// add child
parentPanel.addView(item);
}
私は同意すると、ビューを "複製"する簡単な方法があれば甘いだろうが、私はそれをまだ見つけていない。それ以上の膨らみがあります。しかし、あなたのコードスニペットから、あなたは 'ListView'を使いたいと思うと私は思うでしょう。 – dmon
これは設計によるものです。 1つのビューに対して複数の親を持つことはできず、同じビューを複数回親に追加することもできません。 ViewGroups(と同様のシナリオ)のバグのないコードを作成するのは非常に難しいでしょう。 – inazaruk
@dmon ListViewを使うレイアウトを設計しなかったのは、すべてのものをレイアウトしたいので、コードが複雑になるからです。私は効率のためにListViewにすべてを移動する必要がありますね。 – mkso