我遇到了性能缓慢的问题......
刚拿一个案例:
RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.myrlLayout);
//Adding now 100 Buttons with 100 TextViews below each Button(just a example)
for(i=0;i<100;i++) {
Button btn = new Button(this);
btn.setId(i+1); //Should be a positive integer
//set LayoutParams for Button
RelativeLayout.Layoutparams btn_layoutparams = new RelativeLayout.LayoutParams....
....
myLayout.addView(btn, btn_layoutparams);
TextView mytv = new TextView(this);
mytv.setid(101+i);
//set LayoutParams for Button with referenced to the Button(because the Textview Needs to be
of Button)
....
myLayout.addView(mytv, tv-layoutparams);
}
关于以编程方式创建的大量视图,我的应用程序启动真的很慢...... 我认为这不是因为创建了一个新视图,而是因为每次为视图设置LayoutParamters。我找不到一个解决方法,因为我的TextView的LayoutParams例如需要引用之前创建的按钮。由于我不能真正创建XML布局文件或XML样式文件,因为我无法将XML文件中的tv的layoutparameters锚引用到Moment上不存在的按钮。至少我找不到办法。我希望有人知道在运行时创建如此多的视图时如何明显改进性能。欢迎提出任何建议。
关于来自rom4ek的回复
问题是,我需要计算在完全使用屏幕宽度之前每行可以添加多少视图。这意味着我需要第二个LayoutParams来添加第一行中第一个Button下面的下一个Button。而且我还需要引用之前在LayoutParams中添加的img-Button ..所以不可能将LayoutParams引用到for-loop之前不存在的Button.Maybe我完全错过了什么..你有吗?想法/解决方案?谢谢你的回复。
答案 0 :(得分:0)
如果您设置相同的LayoutParams
,如果您在周期之前移动RelativeLayout.Layoutparams btn_layoutparams = new RelativeLayout.LayoutParams....
会怎样?因此,您将初始化它一次,然后无需每步创建新的LayoutParams。