CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: con ben Thanks ricevuti nelle ultime 24 ore
Utente della settimana: bluemask con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 23 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 13
Discussione:

Prendere in input valori da EditText create dinamicamente

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Post

    Prendere in input valori da EditText create dinamicamente

    Salve a tutti,
    sto cercando di realizzare un app che crea dinamicamente una serie di edittext da codice, praticamente questo:

    tableLayout = new TableLayout(this);
    tableLayout.setGravity(Gravity.CENTER_VERTICAL);

    for (int i = 0; i < 4; i++) {

    tableRow = new TableRow(this); //oggetto di tipo tableRow
    tableRow.setGravity(Gravity.CENTER_VERTICAL);

    for (j = 0; j < 4 ; j++) {
    count++;

    valore = new EditText(this);//dichiarazione ogetto EditText
    valore.setId(count);
    matrice1[j] = valore.getId();
    valore.setHint("valore " + count);
    valore.setPadding(10, 10, 10, 10);
    tableRow.addView(valore);
    }

    tableLayout.addView(tableRow);
    }

    setContentView(tableLayout);

    fin qui tutto bene mi crea correttamente la tabella di edittext e cerco di definirle dando un id con count, ora come faccio a riferirmi alle edittext e prendere il contenuto di ognuna e inserirlo in una matrice[i][j]?
    Grazie mille

  2.  
  3. #2
    Androidiano


    Registrato dal
    Dec 2011
    Messaggi
    70

    Ringraziamenti
    0
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Se usi il metodo getChildAt (int index) sulla tableLayout usando come index il numero di riga, ottieni il corrispondente tableRow; se a quest'ultimo applichi lo stesso metodo passando come index il numero di colonna ottieni la EditText caricata in quella cella.

    Per sicurezza sugli indici, ti consiglio di usare addView (View child, int index) invece di addView (View child) nella fase di creazione della tabella.

  4. #3
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    come il tuo procedimento potrebbe aiutarmi nel acquisire i dati che inserisco nelle edittext? cosa c'è in quello che sto facendo io che dovrebbe ostacolare l'inserimento dei dati che dalle edittext in una matrice?
    perche, non so se il mio procedimento sia sbagliato, ma suppongo che sto indicizzando le edittext con valore.setId(count);

  5. #4
    Androidiano


    Registrato dal
    Dec 2011
    Messaggi
    70

    Ringraziamenti
    0
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Ma tu vuoi recuperare i valori dalle EditText usando il valore di ID e le coordinare (i,j)?

  6. #5
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Costruendo la matrice di edittext dinamicamente con due for annidati, ho pensato che assegnando un id ad ogni edittext e inserendo nelle varie edittext un valore, di poter inserire poi un nuovo button "inserisci" che abbia la funzione di assegnare a matrice[i][j] il valore contenuto nelle edittext, sapendo che mi posso riferire ad ogni edittext tramite l'id che ho assegnato con setId(count)

  7. #6
    Androidiano


    Registrato dal
    Dec 2011
    Messaggi
    70

    Ringraziamenti
    0
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Allora non lo so. Io l'ID di una View lo uso per discriminare chi ha generato un evento, non ho mai fatto una ricerca indicizzata sul ID.
    Ma se lo scopo è solo quello di caricare la matrice, usa il metodo che ho postato sopra utilizzando direttamente i valori di i,j come riga e colonna...

  8. #7
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Saresti cosi gentile da mettere una piccola dimostrazione su come posso impletare il tuo metodo?
    Comunque Grazie Mille

  9. #8
    Androidiano


    Registrato dal
    Dec 2011
    Messaggi
    70

    Ringraziamenti
    0
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Supponendo che la variabile tableLayout che hai usato sopra sia dichiarata come variabile di istanza e che il codice che hai postato venga eseguito alla creazione della activity, aggiungerai un bottone da premere quando hai finito l'inserimento e nel codice di gestione metterai una cosa del genere:
    codice:
    for(int i = 0; i < 4; i++) 
       { TableRow tr = tableLayout.getChildAt(i);
          for(int j = 0; j < 4; j++) 
              { EditText et = tr.getChildAt(j);
                 Matrice[i][j] = et.getText().toString(); // Se Matrice contiene valori numerici devi trasformare la stringa in numero.
              }
       }

  10. #9
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    public class SecondaAttivita extends Activity {
    int[][] matrice1;
    int matrice2[][];
    int count = 0, r11, c11, c22;
    Button secondo;
    TableRow tableRow;
    EditText valore;
    TableLayout tableLayout;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.seconda);

    Bundle extras = getIntent().getExtras();

    r11 = extras.getInt("numero_righeP");
    c11 = extras.getInt("numero_colonneP");
    c22 = extras.getInt("numero_colonneS");

    tableLayout = new TableLayout(this);
    tableLayout.setGravity(Gravity.TOP);

    matrice1 = new int[r11][c11];
    matrice2 = new int[r11][c11];

    //questo ciclo for annidato serve a visualizzare le edittext a matrice
    for (int i = 0; i < r11; i++) {

    tableRow = new TableRow(this); //oggetto di tipo tableRow
    tableRow.setGravity(Gravity.TOP);
    tableLayout.getChildAt(i);

    for (int j = 0; j < c11 ; j++) {
    count++;
    valore = new EditText(this);
    valore.setId(count);//dichiarazione ogetto EditText
    matrice1[i][j] = valore.getId();
    valore.setHint("a " + matrice1[i][j]);
    valore.setPadding(10, 10, 10, 10);//spaziatura di ogni cella per i quattro lati
    tableRow.addView(valore);
    }

    tableLayout.addView(tableRow);

    }

    setContentView(tableLayout);

    secondo = new Button (this);
    secondo.setText("Seconda Matrice");
    tableLayout.addView(secondo);
    secondo.setOnClickListener(new OnClickListener(){
    public void onClick(View arg0) {
    for(int i = 0; i < r11; i++){
    tableRow = (TableRow) tableLayout.getChildAt(i);
    for(int j = 0; j < c11; j++){
    valore = (EditText) tableRow.getChildAt(j);
    matrice2[i][j] = Integer.parseInt(valore.getText().toString());
    valore.setHint("a " + matrice2[i][j]);
    }
    }
    }
    });


    }
    }

    questo è il codice che ho buttato giù seguendo le tue indicazioni ma che però non sembra funzionare.

  11. #10
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    precisamente mi riferisco a questa porzione di codice

    secondo = new Button (this);
    secondo.setText("Seconda Matrice");
    tableLayout.addView(secondo);
    secondo.setOnClickListener(new OnClickListener(){
    public void onClick(View arg0) {
    for(int i = 0; i < r11; i++){
    tableRow = (TableRow) tableLayout.getChildAt(i);
    for(int j = 0; j < c11; j++){
    valore = (EditText) tableRow.getChildAt(j);
    matrice2[i][j] = Integer.parseInt(valore.getText().toString());
    valore.setHint("a " + matrice2[i][j]);
    }
    }
    }
    });

    quello che c'è prima funziona benissimo

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy