Autore Topic: Problema SeekBar/TextView dinamiche  (Letto 765 volte)

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Problema SeekBar/TextView dinamiche
« il: 27 Gennaio 2012, 11:09:49 CET »
0
Ciao a tutti!!  :-)
Vi chiedo una mano perchè sono bloccato e non riesco a risolvere!
Nella mia applicazione, devo creare dinamicamente, via codice, una serie di seekbar. Chiaramente sotto ogni seekbar vorrei che nella relativa textview venisse visualizzato il corrispondente valore. Per fare ciò eseguo le seguente istruzioni:
Codice (Java): [Seleziona]
            for (i=0; i<surveys.size(); i++){
                SeekBar seekBar = new SeekBar(this);
                prova= new TextView(this);
                prova.setText("0");
                seekBar.setMax(Integer.parseInt((ConnectionToWebService.surveys.get(i)).get("max_mark")));
                layout.addView(seekBar);
                   
                seekBar.setOnSeekBarChangeListener( new OnSeekBarChangeListener() {

                                @Override
                                public void onProgressChanged(SeekBar seekBar, int progress,
                                                boolean fromUser) {
                                        // TODO Auto-generated method stub
                                        prova.setText(Integer.toString(progress));
                                }

                                @Override
                                public void onStartTrackingTouch(SeekBar seekBar) {
                                        // TODO Auto-generated method stub
                                         
                                }

                                @Override
                                public void onStopTrackingTouch(SeekBar seekBar) {
                                        // TODO Auto-generated method stub
                                       
                                }
                       
                    });
                layout.addView(prova);
            }

Quello che ottengo è che ogni volta che "muovo" qualsiasi seekbar cambia il valore solo dell'ultima textview (correttamente).
Io vorrei in qualche maniera assegnare ad ogni oggetto un id unico per poi richiamare dall'OnProgressChange, avevo provato con un prova.setId(x) e con un getId() dal metodo ma chiaramente mi visualizzava sempre l'ultima.

Dove sbaglio?? :-(

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:Problema SeekBar/TextView dinamiche
« Risposta #1 il: 27 Gennaio 2012, 12:55:41 CET »
0
Una domanda: se survey.size() vale 7 per caso ti crea 7 seekbar e 7 textview??
Da quello che penso io, al termine del for hai assegnato survey.size() listener per le SeekBar (perciò ogni cambiamento ad una di esse è correttamente registrato). Però uscendo dal ciclo for: prova è l'ultima TextView che ti rimane sotto il nome prova (dato che si chiamano tutte uguali). Perciò quando al listener dici di modificare prova ti modifica solo l'ultima TextView.

Un approccio fulmineo che mi viene in mente è creare un Array di Textview!
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Re:Problema SeekBar/TextView dinamiche
« Risposta #2 il: 27 Gennaio 2012, 15:39:02 CET »
0
Una domanda: se survey.size() vale 7 per caso ti crea 7 seekbar e 7 textview??
Si.

Da quello che penso io, al termine del for hai assegnato survey.size() listener per le SeekBar (perciò ogni cambiamento ad una di esse è correttamente registrato).
Non ho capito cosa intendi  :-(

Però uscendo dal ciclo for: prova è l'ultima TextView che ti rimane sotto il nome prova (dato che si chiamano tutte uguali). Perciò quando al listener dici di modificare prova ti modifica solo l'ultima TextView.

Un approccio fulmineo che mi viene in mente è creare un Array di Textview!

Ho provato a creare un array = new TextView[surveys.size()]; e per ogni iterazione del for ho messo un: array = prova;
Ma non riesco a farlo funzionare correttamente comunque.

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:Problema SeekBar/TextView dinamiche
« Risposta #3 il: 27 Gennaio 2012, 16:11:54 CET »
0
Prova questo codice (non posso sapere se funziona perchè non ho la possibilità di provarlo con le variabili e metodi che hai tu)
Codice (Java): [Seleziona]
prova = new TextView[surveys.size()];
for (i=0; i<surveys.size(); i++){
                SeekBar seekBar = new SeekBar(this);
                prova[i] = new TextView(this);
                prova[i].setText("0");
                seekBar.setMax(Integer.parseInt((ConnectionToWebService.surveys.get(i)).get("max_mark")));
                layout.addView(seekBar);
                   
                seekBar.setOnSeekBarChangeListener( new OnSeekBarChangeListener() {

                                @Override
                                public void onProgressChanged(SeekBar seekBar, int progress,
                                                boolean fromUser) {
                                        prova[i].setText(Integer.toString(progress));
                                }

                                @Override
                                public void onStartTrackingTouch(SeekBar seekBar) {
                                }

                                @Override
                                public void onStopTrackingTouch(SeekBar seekBar) {    
                                }    
                    });
                layout.addView(prova[i]);
            }
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Re:Problema SeekBar/TextView dinamiche
« Risposta #4 il: 27 Gennaio 2012, 16:34:48 CET »
0
No non funziona mi dà lo stesso problema che stavo trovando io: mi dà un ArrayIndexOutOfBoundException sull'istruzione
Codice (Java): [Seleziona]
prova[i].setText(Integer.toString(progress)); e se metto [i-1] torno nella situazione iniziale  :-(

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:Problema SeekBar/TextView dinamiche
« Risposta #5 il: 27 Gennaio 2012, 16:42:50 CET »
0
Si chiaro, perché la variabile i=suevey.size() al termine del for... Perciò ti modifica solamente l'ultima textview. Speravo che funzionasse in maniera diversa. Al momento non mi vengono altre idee in mente. Dovresti trovare un modo per enumerare le seekbar ed aggiornare la textView[#seekbar]
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Re:Problema SeekBar/TextView dinamiche
« Risposta #6 il: 27 Gennaio 2012, 17:58:32 CET »
0
Eh lo so!! purtroppo fino ad ora non sono riuscito a trovarne uno :(

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Re:Problema SeekBar/TextView dinamiche
« Risposta #7 il: 27 Gennaio 2012, 18:18:57 CET »
0
Ok ho risolto, ho settato gli id delle varie seekBar con un bel setId(i) e nell' onProgressChanged ho messo un:
Codice (Java): [Seleziona]
prova[seekBar.getId()].setText(Integer.toString(progress));
Grazie comunque del supporto alexAndroid ;)

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:Problema SeekBar/TextView dinamiche
« Risposta #8 il: 27 Gennaio 2012, 22:14:01 CET »
0
Sono contento di averti supportato ed averti dato quantomeno l'idea di quello che poteva essere ;)
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.