2016-05-25 1 views
0

Je souhaite ajouter du texte à mes EditTexts ajoutés dynamiquement. Pour l'instant, il suffit d'ajouter une mise en page avec deux EditText, son ajout à un LinearLayout sur le bouton.Comment ajouter du texte dans des EditTexts ajoutés dynamiquement

Comment définir le texte de ces Editexts? Parce que maintenant je peux en ajouter autant que je veux et chaque EditText a le même identifiant que dans le fichier layout.

Mon mainactivity.java avec l'inflation sur bouton clicklooks comme ceci:

final LinearLayout mView = (LinearLayout) getLayoutInflater().inflate(R.layout.more_rest_main, null); 
mView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
restLayout.addView(mView); 

Et voici ma mise en page pour more_rest_main.xml

<EditText 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:id="@+id/added_rest_from" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:hint="@string/time_from" 
    android:textSize="15dp" 
    android:focusable="false"/> 

<EditText 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:id="@+id/added_rest_to" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentEnd="true" 
    android:hint="@string/time_to" 
    android:textSize="15dp" 
    android:focusable="false" /> 

Répondre

0

La chose à comprendre ici est que vous pouvez regarder pour une vue enfant dans tout ViewGroup (LinearLayout est un ViewGroup).

Vous êtes probablement familier avec la récupération d'un View dans une activité onCreate, où après avoir appelé setContentView, vous avez accès à tout View avec findViewById.

Ainsi, après le gonflage de votre ViewGroup, vous pouvez utiliser la même approche que vous utiliserez dans une activité onCreate, mais vous devez chercher votre point de vue de l'enfant de ViewGroup:

final LinearLayout mView = (LinearLayout) getLayoutInflater().inflate(R.layout.more_rest_main, null); 

EditText txtAddedRestFrom = (EditText)mView.findViewById(R.id.added_rest_from); 

restLayout.addView(mView); 

Une fois que vous avez votre référence, vous pouvez invoquer n'importe quelle méthode sur votre EditText, telle que setText.

0

Vous pouvez créer un EditText dynamiquement comme suit:

EditText editText = new EditText(myContext); 
editText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
//add the same logic as in the XML file 
mView.addView(editText); 

Vous pouvez également définir une ID dynamique. Si vous utilisez l'API 17 et ci-dessus, procédez comme suit:

editText.setId(View.generateViewId()) 

Sinon, vous pouvez définir un nombre entier positif de votre choix comme une carte d'identité, au lieu d'utiliser:

View.generateViewId() 

Avec le code ci-dessus et puisque ceux-ci seront ajoutés dynamiquement, vous n'avez pas besoin du fichier XML car les EditTexts seront créés dynamiquement. Si vous voulez conserver le fichier XML existant, vous pouvez simplement appeler le

setTag() 

à chacun des EditTexts gonflés et définir une valeur unique dans la méthode setTag. De cette façon, vous pouvez distinguer les EditTexts. Et puisque vous pouvez le faire, vous pouvez ajouter le texte dont vous avez besoin à chacun d'entre eux.

Pour répondre à votre commentaire, sur la façon de définir une OnCLickListener:

editText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // here you can get either the Tag or the ID that 
     // you've set dynamically. And do whatever you like to do 
     view.getTag() 
     view.getId() 
    } 
}); 
+0

Comment cette méthode fonctionne si je veux ajouter un clickListener – mogren3000

+0

@alexandermogren Où voulez-vous ajouter le clickListener? –

+0

Je veux ajouter un clicklistener après que les edittexts ont été créés dynamiquement et vérifiez si vous cliquez dessus. – mogren3000