Autore Topic: cambiamento immagine da valori di un array  (Letto 693 volte)

Offline dario85

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
cambiamento immagine da valori di un array
« il: 29 Novembre 2011, 18:19:24 CET »
0
Salve a tutti,

mi sono ingarbugliato in un problema.
In sintesi, vorrei poter cambiare la sorce di una ImageView, da dei valori scelti casualmente da un vector,

Codice (Java): [Seleziona]
String[] soluzioni = res.getStringArray(R.array.soluzioni);
//creo i vector in base alle risorse
Vector<String> vecSoluzioni = null;
  for (int i=0; i<soluzioni.length; i++)
    vecSoluzioni.add(soluzioni[i]);
        //genero casualmente la prima domanda
        int random = (int)Math.random() * vecSoluzioni.capacity();
        String srcImmagine = vecSoluzioni.remove(random);

//creo gli oggetti sulla scelta della prima domanda
imm=(ImageView)findViewById(R.id.imageView1);
//setto l'immagine in maniera random
imm.setImageResource(srcImmagine);

questo è il codice, ma sembra chiaro e lampante che non funziona, qualcuno mi sa aiutare?

allego una parte del file .xml
Codice (XML): [Seleziona]
<string-array name="soluzioni">
        <item>R.drawable.islanda</item>
<string-array>
grazie mille

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 127
  • 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:cambiamento immagine da valori di un array
« Risposta #1 il: 29 Novembre 2011, 18:37:46 CET »
0
non l'ho testato ma dovrebbe andare:
Codice (Java): [Seleziona]
String strRandom = "islanda";
int Id = getResources().getIdentifier(strRandom, "drawable",getPackageName());
imm.setImageResource(Id);
l'ho usata per le stringhe perciò credo che funzioni anche con il resto.8y3

Offline dario85

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:cambiamento immagine da valori di un array
« Risposta #2 il: 30 Novembre 2011, 08:04:20 CET »
0
Ciao,

mi hai dato uno spunto con quel int id = get... , ho fatto una prova, ed ho fatto al posto di

Codice (Java): [Seleziona]
String[] soluzioni = res.getStringArray(R.array.soluzioni);
ho messo

Codice (Java): [Seleziona]
int[] res.getIntArray(R.array.soluzioni);
e funziona :-))

Grazie

Offline dario85

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:cambiamento immagine da valori di un array
« Risposta #3 il: 30 Novembre 2011, 19:34:36 CET »
0
No scusate, non ho risolto,

perchè poi quando faccio:

Codice (Java): [Seleziona]
imm.setImageResource(random);
non mi setta la sorgente corretta dell'immagine. ma mi tiene quella che avevo impostato nel layout.xml, e se non setto nessuna immagini nel layout non mi viene fuori nessuna immagine  :'( qualcuno puo per caso aiutarmi?
« Ultima modifica: 30 Novembre 2011, 19:40:10 CET da dario85 »

Offline dario85

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:cambiamento immagine da valori di un array
« Risposta #4 il: 30 Novembre 2011, 21:07:49 CET »
0
vi posto i codici dei due file:

Codice (Java): [Seleziona]
package com.geoandroid;

import java.util.Vector;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.format.Time;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
import android.graphics.drawable.Drawable;


public class Game extends Activity implements OnClickListener
{
        private TextView text;
        private TextView punteggio;
        private RadioButton[] rbutton = new RadioButton[3];
        private Button avanti;
        String[] domanda;
        private int punteggioGiocatore = 0;
        Resources res;
        private ImageView imm;
       
        private Giocatore player;
       
        private Vector Vrisposte = null;
        private String[] risposte;
       
        //ImageView image = null;
    @Override
    protected void onCreate(Bundle savedInstanceState)      {
        super .onCreate(savedInstanceState);
        setContentView(R.layout.game);
       
        //recupero il giocatore
        Bundle b = getIntent().getExtras();
        Giocatore player = (Giocatore) b.get("game");
       
        //setto nome e punteggio del giocatore      
        text=(TextView)findViewById(R.id.textView2);
        punteggio=(TextView)findViewById(R.id.textView3);
        text.append(player.getNome());
        punteggio.append("0");
       
        /* Recupero le domande e le risposte dal file domande.xml */
        res = getResources();
        String[] soluzioni = res.getStringArray(R.array.soluzioni);
        int[] immagini = res.getIntArray(R.array.immagini);
        risposte = res.getStringArray(R.array.risposte);
               
        //DEBUG - test
        Vector Vsoluzioni = new Vector();
        for(int i=0; i<soluzioni.length; i++)
           Vsoluzioni.add(soluzioni[i]);
       
        Vector Vimmagini = new Vector();
        for(int i=0; i<immagini.length; i++)
           Vimmagini.add(immagini[i]);
       
        Vrisposte = new Vector();
        for(int i=0; i<risposte.length; i++)
           Vrisposte.add(risposte[i]);
       
        //scelgo l'immagine
        int random = (int)Math.random() * Vimmagini.size();
        Vimmagini.remove(random);
       
       
        //collego la risposta di indice random
        String sol=soluzioni[random];
       
        //scelgo le proposte
        String questionario[] = new String[2]; for(int i=0; i<2; i++) questionario[i]=null; //annullo l'array di poss risposte
       
        for (int i=0; i<2;i++)
        {
                int t=(int)Math.random() * Vrisposte.size();
                questionario[i]=(String) Vrisposte.remove(t);
        }//ho 2 proposte random
       
       
        //setto ImageView e i RadioButton
        imm=(ImageView)findViewById(R.id.imageView1);
       
        String strRandom = sol;
                int Id = getResources().getIdentifier(strRandom, "drawable",getPackageName());
                imm.setImageResource(Id);

        //imm.setImageResource(random);
               
       
        rbutton[0]=(RadioButton)findViewById(R.id.radio0);
        rbutton[1]=(RadioButton)findViewById(R.id.radio1);
        rbutton[2]=(RadioButton)findViewById(R.id.radio2);
       
        rbutton[0].setText(questionario[0]);
        rbutton[1].setText(questionario[1]);
                rbutton[2].setText(sol);

        avanti=(Button)findViewById(R.id.button2);
        avanti.setOnClickListener(this);
               
    }
   
   
    private void reinizializzaProposte() {
               
                Vrisposte.removeAllElements();
                for(int i=0; i<risposte.length; i++)
           Vrisposte.add(risposte[i]);
        }


        public void onClick(View v) {
                switch(v.getId())
        {
                case  R.id.button2:
                        //controllaPunteggio();
                        //domandaSuccessiva();
                        break;
        }      
        }

/*
        private void domandaSuccessiva() {
               
                domanda = res.getStringArray(R.array.domanda_1);
                imm.setImageResource(R.drawable.spagna);
        risposte[0].setText(domanda[1].toString());
        risposte[1].setText(domanda[2].toString());
        risposte[2].setText(domanda[3].toString());
                               
        }


        private void controllaPunteggio()
        {      
                int ris = rg.getCheckedRadioButtonId();
                if(risposte[ris].getText()==(domanda[3].toString()))
                        punteggioGiocatore+=3;
                else
                        punteggioGiocatore+=3;
               
                punteggio.setText("Punteggio: "+punteggioGiocatore);   
        }
       
*/

}

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" android:layout_height="fill_parent">
   
   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:scrollbars="vertical"
   android:scrollbarAlwaysDrawVerticalTrack="true"
   android:background="@color/sfondo_inizio"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:padding="40dp"
   android:orientation="vertical" >

    <TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Nome giocatore: " />

    <TextView
       android:id="@+id/textView3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Punteggio: " />

    <ImageView
       android:id="@+id/imageView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:padding="10dp"
       />
   
     <LinearLayout
       android:id="@+id/linearLayout1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical" >

        <TextView
           android:id="@+id/textView1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Domanda x di y"
           android:textSize="20dip" />

        <RadioGroup
           android:id="@+id/radioGroup1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:minHeight="40dip" >

            <RadioButton
               android:id="@+id/radio0"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:checked="true"
               android:text="RadioButton" />

            <RadioButton
               android:id="@+id/radio1"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="RadioButton" />

            <RadioButton
               android:id="@+id/radio2"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="RadioButton" />
        </RadioGroup>

        <LinearLayout
           android:id="@+id/linearLayout2"
           android:layout_width="wrap_content"
           android:layout_height="match_parent"
           android:layout_marginLeft="80dip"
           android:layout_marginTop="100dip" >

            <Button
               android:id="@+id/button2"
               android:layout_width="100dip"
               android:layout_height="wrap_content"
               android:text="Avanti" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

</ScrollView>