Autore Topic: text view da stringa  (Letto 743 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
text view da stringa
« il: 07 Ottobre 2011, 21:25:43 CEST »
0
ciao gente, sto creando una app per android, ma c'e' un passaggio che non riesco a fare..
in pratica partendo da una gridview,cliccando su una delle caselle  devo far aprire una nuova activity con una textview che contenga un testo diverso in base alla casella cliccata.
in string.xml ho i vari testi che come Id hanno queste diciture:
bcar11,bcar12,bcar13 etc..
quindi ho fatto vari passaggi in modo che quando si clicca una casella della gridview, risulta la stringa R.id.bcar11 o diversa in base alla casella cliccata.
il mio problema e' che non riesco a mettere il testo corrispondente a R.id.bcar11 dentro alla textview..
non so se serve un codice che non conosco o se ho sbagliato completamente metodo..please aiutatemi :D
di seguito vi metto i codici cosi potete capire meglio.
activity iniziale:

Codice (Java): [Seleziona]
GridView gridview1 = (GridView) findViewById(R.id.gridview1);
gridview1.setAdapter(new ImageAdapter(this, images));
gridview1.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                startbarze();
                int row = (position / 4) + 1;
                int column = (position % 4) + 1;
String stringarow = "";
String stringacolumn = "";
stringarow = Integer.toString(row); //trasformo row in string
stringacolumn = Integer.toString(column); //trasformo column in string
String scelta1 = "bcar"+stringarow+stringacolumn; //stringa che richiamerà i testi in string.xml
Toast toast = Toast.makeText(carabinieri.this,scelta1, Toast.LENGTH_SHORT);// serve solo per verificare il testo creato
toast.show();

                  Intent intent;
                        intent =new Intent(getApplicationContext(), barze.class);
               
                String pkg=getPackageName(); //per rendere univoci i nomi delle chiavi passate
                intent.putExtra(pkg+".stringa scelta 1", scelta1); //invia la stringa all'altra activity
                startActivity(intent);
}
});}
private void  startbarze() {
    Intent myIntent;
        myIntent = new Intent(this, barze.class);  
startActivity(myIntent);    

        }
        }
activity in cui c'e' la textview:

Codice (Java): [Seleziona]
Intent intent=getIntent(); // l'intent di questa activity

String pkg=getPackageName();

String scelta1=("R.id."+(intent.getStringExtra(pkg+".stringa scelta 1")));  //prendo i dati
                     

TextView textbarzellette=(TextView)findViewById(R.id.textbarzellette);
textbarzellette.setText=????????????
come posso richiamare da string.xml la stringa relativa al click?
« Ultima modifica: 07 Ottobre 2011, 21:42:09 CEST da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:text view da stringa
« Risposta #1 il: 08 Ottobre 2011, 08:13:34 CEST »
+1
Non puoi fare quello che vorresti fare, nel modo che hai pensato di fare ! :-P

"R.id.bcar11"  <- questa è una stringa di testo
R.id.bcar11  <- questo è un riferimento ad un numero intero

Il metodo che "vorresti" usare è questo : public final void setText (int resid)

Java è un linguaggio fortemente tipizzato...non è un linguaggio di scripting, non è PHP, non è javascript, non è Python...non è nulla di tutto ciò

Se un metodo vuole come argomento un valore numerico intero, tu gli devi dare un valore numerico intero ! Non un numero decimale, nemmeno un valore binario,non una stringa e nemmeno un booleano...ma un numero intero !

Detto questo l'approccio che devi adottare è un altro. Non puoi "costruire" il percorco al riferimento dell'id usando pezzi di stringa...
Pensa ad una strada diversa, per esempio a come associare il riferimento (e non una stringa) R.id.bcar11 ad una View e riottenerlo al click di questa.Ci possono essere svariati metodi...

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:text view da stringa
« Risposta #2 il: 08 Ottobre 2011, 12:33:10 CEST »
0
purtroppo mi aspettavo una risposta di questo tipo...sarebbe stato molto piu comodo poter fare come pensavo io, al momento ho risolto in questo modo:

Codice (XML): [Seleziona]
if (scelta1.toString().equals("R.id.bcar11")){
        textbarzellette.setText(R.string.bcar11);}
if (scelta1.toString().equals("R.id.bcar12")){
        textbarzellette.setText(R.string.bcar12);}

ma cercavo un modo per poter poter urilizzare la stringa senza dover ripetere una marea di volte questo passaggio (in tutto le caselle delle varie gridview sono circa 500..)
avete idea se c'e' un modo piu rapido di quello che sto usando?
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:text view da stringa
« Risposta #3 il: 08 Ottobre 2011, 15:00:54 CEST »
+1
Citazione
Codice (Java): [Seleziona]
Intent intent=getIntent(); // l'intent di questa activity

String pkg=getPackageName();
String scelta1=("R.id."+(intent.getStringExtra(pkg+".stringa scelta 1")));  //prendo i dati
                     

TextView textbarzellette=(TextView)findViewById(R.id.textbarzellette);
textbarzellette.setText=????????????
come posso richiamare da string.xml la stringa relativa al click?
così dovrebbe funzionare:
Codice: [Seleziona]
Intent intent=getIntent()
String strText = intent.getStringExtra(getPackageName()+".stringa scelta 1");
int textId = getResources().getIdentifier(strText, "string",getPackageName());
textbarzellette.setText(getString(textId));
dovresti controllare che textId dopo l'assegnazione sia diverso da 0.8y3

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:text view da stringa
« Risposta #4 il: 08 Ottobre 2011, 22:03:03 CEST »
0
è esattamente quello che cercavo..
non so come ringraziarti,stavo impazzendo a settare tutti gli If manualmente..
se passi da parma ti offro una birra  :-P
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!