Android从findViewById创建一个新对象,而不是使用findViewById

时间:2016-01-06 00:15:37

标签: java android views

我尝试在java中使用TextView设置文本:首先我创建了一个这样的对象:

//Property info
TextView propertyInfo = (TextView) info.findViewById(R.id.info);
propertyInfo.setText(getInfo());

//production
TextView production = (TextView) info.findViewById(R.id.production);
production.setText(getProduction());

后来我尝试了同样的事情,但这次我只是投了它而不是创建一个新的对象:

//Property info
((TextView) info.findViewById(R.id.info)).setText(getInfo());

//production
((TextView) info.findViewById(R.id.production)).setText(getProduction());

在我的测试中,我发现第二种方法在调用时使用的内存较少。 我知道为什么,但是,我想知道这样做的正确方法是什么或者你是怎么做的?

1 个答案:

答案 0 :(得分:1)

这两种方法基本上都在做同样的事情。

如果您需要通过设置多个属性或事件来重复使用TextView,则第一种方法最好避免多次调用findViewById。如果您需要保留对View的引用以便稍后在其他方法中更新,也是必要的。

如果您只使用View一次,我个人更喜欢选项二,因为它更简洁。

值得注意的是,在您的第一种方法中,您确实没有创建新的Object。您只是将返回的View对象与第二种方法相同。