1

私はここで解決策を確認しました:

同じタイプの複数のビューを追加する

そのため、1つのビューだけを変更するのではなく、追加するたびに新しいビューを作成します。

しかし、私はこれをやっています:

for (int i = 0; i < 10; i++) {

LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
                    CommentsActivity.LAYOUT_INFLATER_SERVICE);
View cv = vi.inflate(R.layout.item, null);

TextView textView1 = (TextView) cv.findViewById(R.id.tv1);
textView1.setText("-" + i);
TextView textView2 = (TextView) cv.findViewById(R.id.tv2);
textView2.setText("--" + i);
LinearLayout insertPoint = (LinearLayout) findViewById(R.id.layout);
insertPoint.addView(cv, 0, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}

つまり、すべてのiに対して新しいインフレータとビューを作成するようなものです。しかし、私は最後のアイテムしか手に入れていません。

つまり、tv1が-9、tv2が--9の1つのinflatedViewのみです。

forループに入るたびに、古いビューが新しいビューに置き換えられているようです。10個すべてのビューを追加するにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

3

通常私はこれを使用します

private void renewDetail(){
        llDetail.removeAllViews();
        for (int i = 0; i < 10; i++) {
            llDetail.addView(new ChildDetailNotePieDiagram(context, "Name", 1000, 10));
        }
    }

ロジックは、最初に親レイアウトからすべてのビューをクリアしてから、親レイアウトにビューを追加することです。

ここで、llDetailは線形レイアウトであり、線形レイアウトクラスChildDetailNotePieDiagramを作成して線形レイアウトに追加するため、基本的に現在使用しているものとは異なるソリューションですが、必要に応じて私のソリューションを試すことができると思います:)お気軽にお問い合わせくださいコメントでこれについての質問

于 2012-11-01T06:56:21.567 に答える