android - 重复使用 "findViewById"还是存储View?

标签 android findviewbyid

我是个效率狂(我相信你们中的很多人也是),我想知道这个问题有一段时间了,只是想提出这个问题:

两种情况,可能有两种不同的答案。

如果我循环遍历项目列表并更新 LinearLayout 中的一堆 EditText,这两种方法的优缺点是什么: 1)

for (int i = 0; i < itemList.size(); i++) {
    ((TextView)findViewById(itemList.get(i).getId())).setText(itemList.getText());
    ((TextView)findViewById(itemList.get(i).getId())).setColor(itemList.getColor());
}

2)

TextView tv;
for (int i = 0; i < itemList.size(); i++) {
    tv = ((TextView)findViewById(itemList.get(i).getId()));
    tv.setText(itemList.getText());
    tv.setColor(itemList.getColor());
}

我认为潜在的问题是“findViewById”的效率如何?这可能很挑剔,我认为 2) 是更好的解决方案。谢谢!

最佳答案

使用第二个选项,您可以保存: - 调用 findViewById() - 调用 itemList.get(i) - 调用 [itemList.get(i)] getId()

另外,请注意,在 for 循环中,通常向后执行比向前执行要快一点(更优化)(因为 i < value 转换为 i-value < 0,这比 i > 0 更昂贵)。

关于android - 重复使用 "findViewById"还是存储View?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26869490/

相关文章:

android - android中的磁盘缓存是什么,它与物理硬盘空间有什么不同?

jquery - 如何在div中动态添加滚动条?

安卓 onClose 事件

android - findViewById() 上的 NoSuchFieldError

android - 通过 BroadcastReceiver 的短信接收器

android - 解析: Retrieving Child from Parent

Android注解不知道textview

android - 调用 findViewById() 获取 fragment View 时出现 NullPointerException

android - View.findViewById() 返回 null

java - 底部导航 FindViewById 获取 null (kotlin)