我在这里检查了解决方案:
Adding multiple views of the same type
鉴于此,每次添加时都会创建一个新视图,而不是只更改一个视图。
但我这样做:
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 创建一个新的inflater和视图一样。但我只是得到了最后一项。
ie ..,只有1个inflatedView,其中tv1为 -9 ,tv2为 - 9
似乎每次进入for循环时,旧视图都会被新视图所取代。如何添加所有10个视图??
THANKYOU
答案 0 :(得分:3)
通常我会用这个
private void renewDetail(){
llDetail.removeAllViews();
for (int i = 0; i < 10; i++) {
llDetail.addView(new ChildDetailNotePieDiagram(context, "Name", 1000, 10));
}
}
逻辑首先我从父布局清除所有视图,然后将视图添加到父布局。
其中llDetail是一个线性布局,我创建一个线性布局类ChildDetailNotePieDiagram并将其添加到线性布局,所以基本上它与你现在使用的解决方案不同 但我认为你可以尝试我的解决方案,如果你想:) 请随时在评论中询问有关此问题的任何问题