2012-07-03 41 views
0

下面是一個佈局,我想重用Android的 - 回用充氣查看

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:id="@+id/widget_layout" 
    android:layout_weight="1" 
    android:padding="5dip" 
    android:layout_margin="2dip" 
    android:background="@drawable/round_corners" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/widget_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:hint="New Source" 
     android:textStyle="bold" /> 

</LinearLayout> 

我用它在我的活動onCreate方法如下

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.widget_container_layout); 
    LayoutInflater inflater = getLayoutInflater(); 
    HorizontalScrollView news_scroll = (HorizontalScrollView)findViewById(R.id.news_scroll); 
    LinearLayout newsContainer = (LinearLayout) inflater.inflate(R.layout.scroll_layout, null); 
    TextView widgetTitle; 
    LinearLayout widget_layout; 

    for(int i = 0; i < 6; i++) { 
     widget_layout = (LinearLayout) inflater.inflate(R.layout.widget_layout, 
     newsContainer).findViewById(R.id.widget_layout); 
     widgetTitle = (TextView)(widget_layout.getChildAt(0)); 
     widgetTitle.setText("New Source " + i); 
    } 

    news_scroll.addView(newsContainer); 
} 

所以我會得到一個名爲widget_layout加入我的線性佈局6次到我的newsContainer線性佈局。但文字沒有正確反映。

我希望看到的文本6個文本框爲

新源0新源1新源2新源3新源4新源5

但輸出我得到的是

新源5新源0新源0新源0新源0新源0

+1

您在「newsContainer」中添加「widget_layout」的位置? –

回答

1

所有充氣widget_layout s在news_container中具有相同的ID。它看起來像循環中的findViewById沒有返回最後一個添加的小部件,而只是一些具有該ID的小部件。 嘗試使用空的父級對小部件進行膨脹,然後將其添加到容器中。 事情是這樣的:

for() { 
    widget_layout = (LinearLayout) inflater.inflate(R.layout.widget_layout, null); 
    widgetTitle... 
    news_container.addView(widget_layout); 
} 

檢查的LinearLayout的更多信息和選項的addView