J'ai lu ceci quelque part ici et je l'ai totalement perdu, mais je pourrais avoir besoin d'aide.
Mon application extrait les noms de colonnes de sqlite dans un tableau. Je veux créer une vue de texte et éditer du texte pour chacun (via la taille du tableau), et je me souviens avoir lu quelque part que vous pouvez traiter les noms de variables textViews comme un tableau, mais je ne sais pas où cela se trouve maintenant.
Alors, comment pourrais-je créer dynamiquement un textView et editText pour autant de listes sont dans un tableau?
C'était quelque chose comme
TextView tv[] = new TextView()...
for(...){
tv[i]...
}
Est-ce correct?
J'apprécie ton aide!
Quelque chose comme ce qui suit devrait être ce dont vous avez besoin:
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;
}
Vous pouvez ajouter TextView
s à l'exécution en suivant le code ci-dessous:
LinearLayout lLayout = (LinearLayout) findViewById(R.id.linearlayout2); // Root ViewGroup in which you want to add textviews
for (int i = 0; i < 5; i++) {
TextView tv = new TextView(this); // Prepare textview object programmatically
tv.setText("Dynamic TextView" + i);
tv.setId(i + 5);
lLayout.addView(tv); // Add to your ViewGroup using this method
}
L'utilisation d'ArrayList peut vous aider à ajouter n'importe quel nombre de TextViews dynamiquement. Vous pouvez même vouloir supprimer un TextView spécifique de la disposition linéaire parent. C'est un moyen efficace de mémoire. Voici un extrait.
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));
Je pense que cela sera 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);
}
Pour moi, c'est une solution.
// Définir les variables
TextView t;
ArrayList<TextView> textViewArrayList;
LayoutInflater layoutInflater;
LinearLayout ll_itensobrigatorios
// Dites dans votre onCreate
layoutInflater = getLayoutInflater();
createViewItem(new String[]{"Fabio", "Santos", "Programador", "Natal"});
// Cette vue crée dans la 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]);
}
}
Disons donc que vous avez créé une disposition linéaire dans 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 vues de texte 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 :)
}