2016-05-18 1 views
0

template.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:layout_width="match_parent" 
    android:layout_below="@+id/header" 
    android:orientation="horizontal" 
    android:id="@+id/template_linear_layout_container" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <LinearLayout 
     android:id="@+id/template_linear_layout"> 
     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:id="@+id/template_title_TV" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="ALL" 
     </RelativeLayout> 
    </LinearLayout> 
</LinearLayout> 

J'ai créé un TextView intérieur template.xml et je peuplé cette disposition linéaire de l'intérieur template.xml parent_view utilisant gonfleur. Je veux changer le texte de chaque textview peuplé mais le code ci-dessus change le texte du premier textview seulement.Comment définir différents textes dans les TextViews remplis avec inflater?

+0

et 'ID' est un nombre, car ils pointent toujours vers le même identifiant, puis est toujours la même ressource (un TextView) qui est être ciblé. Vous avez besoin d'un ID pour chaque 'View' ou d'une seule instance dans un autre' View' unique .. donc un "mainLayout", avec 3 "LinearLayout" (a, b, c), puis en utilisant 'mainLayout. a.title', 'mainLayout.b.title',' mainLayout.c.title' – Bonatti

Répondre

0

Comme Bonatti a souligné, findViewById() cibles la même ressource trois fois. Ainsi, au lieu d'accéder directement template_title_TV, j'accédaient par container_template Vue:

TextView title_tv_template = (TextView)container_template.findViewById(R.id.template_title_TV); 
0

Le code ci-dessus est erroné, vous devez définir d'abord le texte et l'ajouter à la vue parent suivante ..

for(int i=0;i<3;i++){ 
    View container_template = getLayoutInflater().inflate(R.layout.templates, parent_layout, false); 
    TextView title_tv_template = (TextView) container_template. findViewById(R.id.template_title_TV); 
    title_tv_template.setText(1+i+"text changed "); 
    parent_layout.addView(container_template); 
} 

Ce code fonctionnera ..

+0

Non, cela n'a pas fonctionné. – Prince