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创建一个新的充气机和视图。但我只得到最后一项。

即..,只有1个inflatedView,tv1为-9,tv2为--9

似乎每次我进入 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 回答