Android - problemas con Listview

   
Vista:

problemas con Listview

Publicado por juanjo (1 intervención) el 15/05/2015 02:42:57
Lo primero hola a todos y gracias por este gran foro. Mi problema es que tengo un listview y lo recorro para sacar los datos que el usuario introduce en el, si el listview cabe entero en pantalla no hay ningun problema, todo funciona perfectamente, recojo los datos y los muestro sin ningun problema, pero si el listview no me cabe entero en pantalla ya que es dinamico y no se cuantos elementos tendra, es decir, si me toca hacer scroll para ver algun elemento ya no puedo recojer los datos del listview, me da un null pointer exception, alguien sabe a que puede ser debido esto??, agradeceria muchisimo cualquier tipo de ayuda, este es mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
public class ListaApuestas extends Activity{
    public BaseAdapter adaptador;
    protected static List<Apuesta> vectorApuestas = new ArrayList<Apuesta>();
    double dinerototal;
    int apuestatotal;
    int j = 0;
    double ganancia;
    double gananciaredondeada;
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lista_apuestas);
        adaptador = new ArrayAdapter(this,
                R.layout.elemento_lista,
                R.id.apuestatext,
                listaNombres());
        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(adaptador);
        Button b = (Button) this.findViewById(R.id.enviarlista);
        b.setOnClickListener(new View.OnClickListener() {
 
            @override
            public void onClick(View v) {
                comprobarGanancia();
                Intent i = new Intent(ListaApuestas.this, MostrarGanancia.class);
                i.putExtra("ganancia", gananciaredondeada);
                startActivity(i);
            }
 
        });
    }
 
    public List listaNombres(){
        Bundle extras = getIntent().getExtras();
        String apuesta = this.getIntent().getExtras().getString("text");
        apuestatotal = Integer.parseInt(apuesta);
        String dinero = extras.getString("text1");
        dinerototal = Double.parseDouble(dinero);
 
       ArrayList resultado = new ArrayList();
        for (int i=0; i<apuestatotal; i++){
            if (i<9){
                resultado.add("apuesta 0" + (i+1) + " odds ");
            } else {
                resultado.add("apuesta " + (i+1) + " odds ");
            }
 
        }
        return resultado;
    }
 
    public List crearListaApuestas() {
        ListView lv = (ListView)findViewById(R.id.listView);
        int count = lv.getAdapter().getCount();
 
        for (int i = 0; i < count; i++)
        {
            ViewGroup row = (ViewGroup) lv.getChildAt(i);
            CheckBox check = (CheckBox) row.findViewById(R.id.acertadocheck);
            TextView apuesta = (TextView) row.findViewById(R.id.apuestatext);
            EditText odds = (EditText) row.findViewById(R.id.oddstext);
            //  Get your controls from this ViewGroup and perform your task on them =)
 
            String apuestaString = apuesta.getText().toString();
            double oddsdouble = Double.parseDouble(odds.getText().toString());
            boolean checked = false;
            if (check.isChecked())
            {
             checked = true;
            }
 
            Apuesta apuestaArray = new Apuesta();
            apuestaArray.setNombreapuesta(apuestaString);
            apuestaArray.setOdds(oddsdouble);
            apuestaArray.setCheck(checked);
            vectorApuestas.add(apuestaArray);
 
        }
 
        return vectorApuestas;
    }
 
   public void comprobarGanancia() {
 
        List<Apuesta> apuestasSimples = crearListaApuestas();
        comprobarAciertos();
        long aciertos = j;
        ApuestaMultiple apuestaMultiple = new ApuestaMultiple(dinerototal, aciertos, apuestatotal, apuestasSimples);
 
        ganancia = apuestaMultiple.calcularGanancia();
        gananciaredondeada = (double) Math.round(ganancia * 100) / 100;
    }
}

Espero que alguien me pueda ayudar, un saludo y gracias por todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder