2012-07-03 2 views
0

Ниже приведен макет, который я хочу, чтобы повторно использоватьAndroid - Повторное использование завышены View

<?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); 
} 

Так я получаю мой Linear Layout называется widget_layout добавил 6 раз к моему новостному контенту Linear Layout. Но текст не отражает должным образом.

Я ожидаю увидеть 6 текстовых полей с текстом, как

Новый источник 0 Новый источник 1 Новый источник 2 Новый источник 3 Новый источник 4 Новый источник 5

Но выход я получаю

Новый источник 5 Новый источник 0 Новый источник 0 Новый источник 0 Новый источник 0 Новый источник 0

+1

где вы добавляете "widget_layout" в свой стенд "newsContainer"? –

ответ

1

Все надутые widget_layout s в news_container имеют одинаковый идентификатор. Похоже, что findViewById в цикле не возвращает последний добавленный виджет, а только некоторый виджет с этим ID. Попробуйте вместо этого раздуть виджет с нулевым родителем и затем добавить его в контейнер. Что-то вроде этого:

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

Проверить LinearLayout-х addView для получения дополнительной информации и опций.

Смежные вопросы