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!

29
demandé sur Anthony Honciano 2011-05-07 04:29:08

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;
}
61
répondu Joseph Earl 2011-05-07 01:21:58
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..
10
répondu jayrhd 2014-02-07 10:14:53

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);
}
3
répondu Jabbir Basha 2012-11-28 06:16:37

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));
3
répondu backslashN 2016-08-02 09:22:03

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 :)
    }
0
répondu Bhriguraj Salponia 2017-02-22 08:08:46

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]);
            }
}
0
répondu Programador 2018-02-17 12:58:26