我动态地将textviews添加到基于用户响应的相对布局以创建彩色网格图案。通常情况下,这可以包含5000多个textview,它们根据textview标记中的值具有不同的背景颜色。如何加速循环
我有这种方法,我遍历所有textviews,只显示那些具有相同的颜色,并将其余设置为灰色。如果有500条文字浏览,但是数字较高时表示5000,则需要13秒才能完成。
if (code.equals("all")) {
for (int i = 0; i < textViewIDs.size(); i++) {
TextView tv = (TextView) findViewById(textViewIDs.get(i));
if (!tv.getTag().toString().equals("header")) {
tv.setBackgroundColor(Color.parseColor("#" + tv.getTag().toString()));
}
}
} else {
for (int i = 0; i < textViewIDs.size(); i++) {
TextView tv = (TextView) findViewById(textViewIDs.get(i));
if (!tv.getTag().equals(code)) {
if (!tv.getTag().toString().equals("header")) {
tv.setBackgroundColor(Color.LTGRAY);
}
}else{
tv.setBackgroundColor(Color.parseColor("#" + tv.getTag().toString()));
}
}
}
textViewIDs是包含所有textview标识的数组。
如果能做些什么来加快速度呢?
更新: 据我所知,拥有这些小部件并不理想,但我无法想出更好的解决方案。 以及每个网格单元格,在这种情况下,每个texview,具有不同的颜色,我也需要能够管理单元格的onclick事件,以便我可以添加文本。这是文字浏览的推理。在使用textviews之前,我绘制了所有元素,但是当我找不到将onclick事件添加到每个单元格的方法时。
我最好详细说明这个概念,以帮助我们试图实现的目标,以及如果我走错了路。
这是一个更大的应用程序的一部分,我将图像转换为针迹图。 基于用户输入,绘制彩色单元网格,其中每个单元格是从原始图像最主要颜色计算出的纯色。 网格将比屏幕大,所以我的视图放置在水平和滚动视图中,以便它们可以平移和缩放。 (这一切都很好)。 网格单元格必须可点击才能打开或关闭背景颜色,并添加单个文本“X”字符以将针迹(单元格)标记为已完成(这会减慢文本视图(单元格)为> 500)
希望有足够的细节还有...
数组没有得到方法。 – Blackbelt
以及它不是阵列,它的数组列表......但我不认为你实际上可以加速循环...但是数组如果排序的话会更快,但是这要帮助你很多:) –
或者试着使用ListView –