7

以下代码将同一视图膨胀 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。

谁能告诉我如何在膨胀后多次使用视图。

4

2 回答 2

0

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

但是以 gridViews 为例。他们创造了大量的观点并展示出来,效果很好。

您不能将视图的同一对象添加到布局中 2 次。每个对象都有自己的状态,在您的情况下,这意味着您将在所有 20 个视图之间共享状态,这是没有意义的,这意味着更改一个 textView 上的文本将更改其余所有视图上的文本。 .

只需膨胀 20 个单独的视图并适当地填充它们。

如果您实际上拥有完全相同的视图,还可以考虑使用 ListView 或 GridView,它可以提供一些不错的功能,例如视图回收。

于 2013-05-22T11:02:47.877 回答
-1

您应该使用 ViewHolder 模式:

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

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

于 2013-05-22T11:10:36.863 回答