mardi 9 novembre 2021

Arraylist returns null for an item, but it´s not empty

I'm having a problem with an arraylist. What I want to do is retrieve a random item from the Arraylist called "NombresImagenesAzúcares", wich contains String elements.

My solution was to generate a random number called "num1" between 0 and the size of "NombresImagenesAzúcares" and then set the value of another String called "AzucarRandom" to the item of the Arraylist on the position "num1".

Random random = new Random();
int num1=0;
num1 = random.nextInt(NombresImagenesAzúcares.size());
String AzucarRandom = NombresImagenesAzúcares.get(num1);

Since the app wasn't working I debugged it and found out that the problem was that the value of "AzucarRandom" was null. I tried searching for a solution but I don't understand why the code doesn't work.

Here is the full code and the code for the class "Azucar"

public class AzucarCorrecto extends AppCompatActivity {

private TextView AzucarAzar;

private ImageButton ib1,ib2,ib3,ib4;

private int BotonSeleccionado = 0, BotonCorrecto=0;

private ArrayList<String> NombresImagenesAzúcares = new ArrayList<>();


 //Objetos Carga de Datos
 private ArrayList<Azucar> Azúcares = new ArrayList<>();
 private ArrayList<Azucar> AldosasHaworth = new ArrayList<>();
 //Objetos Carga de Datos


 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_azucar_correcto);


     //----------------------------------------------------------------------------------------------
     // COMIENZA CARGA DE DATOS
     //----------------------------------------------------------------------------------------------

     //---------------------------------------------------------------------------------
     //Carga de Aldosas para busqueda Imagen en Fischer

     Azucar Fgliceraldehido = new Azucar();

     Fgliceraldehido.setNombre("D-Gliceraldehído");
     Fgliceraldehido.setNombreImagen("fischer_gliceraldehido");


     Azucar Feritrosa = new Azucar();

     Feritrosa.setNombre("D-Eritrosa");
     Feritrosa.setNombreImagen("fischer_eritrosa");


     Azucar Ftreosa = new Azucar();

     Ftreosa.setNombre("D-Treosa");
     Ftreosa.setNombreImagen("fischer_treosa");


     Azucar Fribosa = new Azucar();

     Fribosa.setNombre("D-Ribosa");
     Ftreosa.setNombreImagen("fischer_ribosa");

     Azucar FArabinosa = new Azucar();

     FArabinosa.setNombre("D-Arabinosa");
     Ftreosa.setNombreImagen("fischer_arabinosa");

     Azucar FXilosa = new Azucar();

     FXilosa.setNombre("D-Xilosa");
     Ftreosa.setNombreImagen("fischer_xilosa");

     Azucar FLixosa = new Azucar();

     FLixosa.setNombre("D-Lixosa");
     Ftreosa.setNombreImagen("fischer_lixosa");

     Azucar FAlosa = new Azucar();

     FAlosa.setNombre("D-Alosa");
     Ftreosa.setNombreImagen("fischer_alosa");

     Azucar FAltrosa = new Azucar();

     FAltrosa.setNombre("D-Altrosa");
     Ftreosa.setNombreImagen("fischer_altrosa");

     Azucar FGlucosa = new Azucar();

     FGlucosa.setNombre("D-Glucosa");
     Ftreosa.setNombreImagen("fischer_glucosa");

     Azucar FManosa = new Azucar();

     FManosa.setNombre("D-Manosa");
     Ftreosa.setNombreImagen("fischer_manosa");

     Azucar FGlulosa = new Azucar();

     FGlulosa.setNombre("D-Glulosa");
     Ftreosa.setNombreImagen("fischer_glulosa");

     Azucar FIdosa = new Azucar();

     FIdosa.setNombre("D-Idosa");
     Ftreosa.setNombreImagen("fischer_idosa");

     Azucar FGalactosa = new Azucar();

     FGalactosa.setNombre("D-Galactosa");
     Ftreosa.setNombreImagen("fischer_galactosa");

     Azucar FTalosa = new Azucar();

     FTalosa.setNombre("D-Talosa");
     Ftreosa.setNombreImagen("fischer_talosa");

     //----------------------------------------------------------------------------------
     //ArrayList Azúcares

     Azúcares.add(Fgliceraldehido);
     Azúcares.add(Feritrosa);
     Azúcares.add(Ftreosa);
     Azúcares.add(Fribosa);
     Azúcares.add(FArabinosa);
     Azúcares.add(FXilosa);
     Azúcares.add(FLixosa);
     Azúcares.add(FAlosa);
     Azúcares.add(FAltrosa);
     Azúcares.add(FGlucosa);
     Azúcares.add(FManosa);
     Azúcares.add(FGlulosa);
     Azúcares.add(FIdosa);
     Azúcares.add(FGalactosa);
     Azúcares.add(FTalosa);


     //-------------------------------------------------------------------------------------
     // Carga Nombres Aldosas Haworth

     //NombresAldosasHaworth.add("haworth_alfa_glucosa");
     //NombresAldosasHaworth.add("β-D-Glucopiranosa");


     //----------------------------------------------------------------------------------------------
     // FINALIZA CARGA DE DATOS
     //----------------------------------------------------------------------------------------------



         //NombresAzúcares.addAll(AldosasHaworth);
     for (int ii=0;ii<Azúcares.size();ii++){
         NombresImagenesAzúcares.add(Azúcares.get(ii).getNombreImagen());}

         GenerarAzucaryOpciones();

 }

     //------------------------------------------------------------------------------------------
     //Metodo para cargar un nombre de Azucar al Azar

     public void GenerarAzucaryOpciones(){

         AzucarAzar = findViewById(R.id.txt_Azucar);

         //Elijo un azúcar al azar y tomo su NombreImagen
         Random random = new Random();
         int num1=0;
         num1 = random.nextInt(NombresImagenesAzúcares.size());
    
    
         String AzucarRandom = NombresImagenesAzúcares.get(num1);

public class Azucar implements Serializable {

    private String Nombre, NombreImagen;
    private int Imagen;

    public String getNombre() {
        return Nombre;
    }
    public void setNombre(String nombre) {
        Nombre = nombre;
    }

    public int getImagen() {
        return Imagen;
    }
    public void setImagen(int imagen) {
        Imagen = imagen;
    }

    public String getNombreImagen(){return NombreImagen;}
    public void setNombreImagen(String nombremostrar){
        NombreImagen =nombremostrar;}

}



Aucun commentaire:

Enregistrer un commentaire