Ajouter dynamiquement des textViews à un essai en ligne
j'ai lu ceci quelque part ici et je l'ai complètement perdu, mais je pourrais avoir besoin d'aide.
mon application tire les noms de colonne de sqlite dans un tableau. Je veux créer un textview et éditer du texte pour chacun d'eux (via la taille du tableau), et je me souviens avoir lu quelque part que vous pouvez traiter les noms des variables textViews comme un tableau, mais je ne sais pas où c'est maintenant.
alors comment je créerais dynamiquement un textView et un texte d'édition pour combien de listes sont dans un tableau?
C'était quelque chose comme
TextView tv[] = new TextView()...
for(...){
tv[i]...
}
c'Est bon?
j'apprécie votre aide!
6 réponses
quelque Chose comme ce qui suit devrait être ce que vous avez besoin de:
final int N = 10; // total number of textviews to add
final TextView[] myTextViews = new TextView[N]; // create an empty array;
for (int i = 0; i < N; i++) {
// create a new textview
final TextView rowTextView = new TextView(this);
// set some properties of rowTextView or something
rowTextView.setText("This is row #" + i);
// add the textview to the linearlayout
myLinearLayout.addView(rowTextView);
// save a reference to the textview for later
myTextViews[i] = rowTextView;
}
LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout2);
for (int i = 0; i < 5; i++)
{
TextView tv = new TextView(this);
tv.setText("Dynamic TextView" + i);
tv.setId(i + 5);
ll.addView(tv);
}
u can do like this also..
je pense que cela va être utile:
int j = 0;
context.getSystemService(Context.WINDOW_SERVICE);
WindowManager manager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
for (int i = 0; i < tabsize; i++) {
Tab tab = tabSet.get(i);
if (i == selectedTabId)
tab.setSelected(true);
View view = tab.getView();
TableRow.LayoutParams pCol = new TableRow.LayoutParams();
pCol.width = display.getWidth() / tabSet.size();
rowBottom.addView(view, pCol);
}
utiliser ArrayList peut vous aider à ajouter n'importe quel nombre de TextViews dynamiquement. Vous pouvez même supprimer un TextView spécifique de la disposition linéaire de parent. C'est un mémoire de manière efficace. Voici un extrait de code.
ArrayList<TextView> mTextViewList = new ArrayList<>(); //empty list of TextViews
if(condition){
/* can repeat several times*/
//Create a temporary instance which will be added to the list
final TextView mTextView = new TextView(this);
//Add the instance to the ArrayList
mTextViewList.add(mTextView);
//Add view to the Parent layout in which you want to add your views
mLinearLayout.addView(mTextView);
}
//Change the text of 6th(index:5) TextView which was added
mTextViewList.get(5).setText("My Text");
//Remove 2nd(index:1) TextView from the parent LinearLayout
mLinearLayout.removeView(mTextViewList.get(1));
alors disons que vous avez créé une sortie linéaire à l'intérieur d'un.fichier xml comme ceci:
<LinearLayout
android:orientation="vertical"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
maintenant le code pour ajouter 5 textviews dynamiquement
LinearLayout linearLayout= (LinearLayout)findViewById(R.id.linear); //find the linear layout
linearLayout.removeAllViews(); //add this too
for(int i=0; i<5;i++){ //looping to create 5 textviews
TextView textView= new TextView(this); //dynamically create textview
textView.setLayoutParams(new LinearLayout.LayoutParams( //select linearlayoutparam- set the width & height
ViewGroup.LayoutParams.MATCH_PARENT, 48));
textView.setGravity(Gravity.CENTER_VERTICAL); //set the gravity too
textView.setText("Textview: "+i); //adding text
linearLayout.addView(textView); //inflating :)
}
Pour moi, c'est une solution.
// Définition Des Variables
TextView t;
ArrayList<TextView> textViewArrayList;
LayoutInflater layoutInflater;
LinearLayout ll_itensobrigatorios
// Racontez en vos onCreate
layoutInflater = getLayoutInflater();
createViewItem(new String[]{"Fabio", "Santos", "Programador", "Natal"});
// Cette vue de créer dans le mise en page
private void createViewItem(String[] nomes) {
textViewArrayList = new ArrayList<>();
for(int i = 0; i < nomes.length; i++) {
View vll = layoutInflater.inflate(R.layout.nomes_tec_item, ll_itensobrigatorios, false);
t = (TextView) vll.findViewById(R.id.txt_tec_item);
textViewArrayList.add(t);
ll_itensobrigatorios.addView(vll);
}
for(int i = 0; i < textViewArrayList.size(); i++) {
textViewArrayList.get(i).setText((i + 1) + " - " + nomes[i]);
}
}