在android中重用膨胀的视图

时间:2013-05-22 10:55:58

标签: android android-layout

以下代码将同一视图膨胀20次。膨胀是昂贵的。我想只给它充气一次,对20个项目使用相同的视图,我只想更改UI中的可见数据。

LinearLayout ll = new LinearLayout(context); 
for (int i = 0; i < 20; ++i) {
    View itemView = inflater.inflate(getLayoutId(), parent, false);
    itemView.setText(data.getName(i);
    ll.add(itemView);
}

我想要这样的东西。

LinearLayout ll = new LinearLayout(context); 
View itemView = inflater.inflate(getLayoutId(), parent, false);
for (int i = 0; i < 20; ++i) {
    itemView.setText(data.getName(i);
    ll.add(itemView);
}

但是我无法以这种方式使用itemView obj。

任何人都可以告诉我如何在充气后多次使用该视图。

2 个答案:

答案 0 :(得分:0)

你做不到。如果您认为它的成本很高,那么可以找到另一种方法来创建您的布局。

但请考虑使用gridViews。他们创造了大量的观点并展示它们,并且效果很好。

您无法将2次视图的同一对象添加到布局中。每个对象都有自己的状态,在你的情况下,你会在所有20个视图之间分享状态,这是没有意义的,这意味着更改一个textView上的文本将在所有其他部分改变它。

只需夸大20个单独的视图并适当填充它们。

另外考虑使用ListView或GridView,如果你真的有完全相同的视图,它可以提供一些很好的功能,如视图回收。

答案 1 :(得分:-1)

你应该使用ViewHolder patern:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder

它应该做你想要的所有事情