2012-07-03 2 views
0

Voici une mise en page que je veux réutiliserAndroid - Réutiliser gonflé Voir

<?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> 

Je l'utilise dans mon activité onCreate méthode comme suit

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

si je reçois ma mise en page linéaire appelé widget_layout ajouté 6 fois à mon newsContainer Linear Layout. Mais le texte ne reflète pas correctement.

Je me attends à 6 zones de texte avec le texte comme

New Source 0 New Source 1 New Source 2 New Source 3 New Source 4 New Source 5

Mais la sortie que je reçois est

New Source 5 New Source 0 0 Nouvelle source Nouvelle source 0 0 Source New New Source 0

+1

où vous ajoutez "widget_layout" dans votre "newsContainer"? –

Répondre

1

Tous les widget_layout gonflés dans le news_container ont le même ID. Il semble que findViewById dans la boucle ne renvoie pas le dernier widget ajouté, mais juste un widget avec cet ID. Essayez plutôt de gonfler le widget avec un parent nul, puis de l'ajouter au conteneur. Quelque chose comme ceci:

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

addView de Check LinearLayout pour plus d'informations et d'options.