Java - Barra de progreso con AsynTask

 
Vista:
Imágen de perfil de esi92

Barra de progreso con AsynTask

Publicado por esi92 (37 intervenciones) el 14/01/2016 10:10:37
Buenas!
A ver si me podeis echar un cable, tego una App en Android en la que al pulsar un botón se inicia un contador de (0 a 1000) y también una barra de progreso con otro contador en % arriba. Pues mi problema es que ese % llega a 1000% y yo quiero que llege a 100% y no se me ocurre como hacerlo. Pongo algún trozo de código de mi App que pienso que es por donde pueden ir los tiros :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    //clase que extiende a AsyncTask
    private class DoCountingTask extends AsyncTask<Void, Integer, Void> {
        protected Void doInBackground(Void... params) {
            for (int i = 1; i <= 1000; i++) {
                //---reporta el progreso---
                publishProgress(i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    Log.d("Threading", e.getLocalizedMessage());
                }
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Integer... progress) {
            progressBar.setProgress(progress[0]);
            tvProgreso.setText(progress[0] + "%");
            tvContador.setText(progress[0].toString());
            Log.d("Threading", "actualizando...");
        }
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
sin imagen de perfil
Val: 80
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Barra de progreso con AsynTask

Publicado por Juan R. (108 intervenciones) el 14/01/2016 11:47:43
Buenas esi

progress[] entiendo que es un array de Strings, no? Lo que haría yo sería pasar el contenido a un número con decimales, por ejemplo así:

varFloat = Float.parseFloat(progress[0]);

y después lo divides entre 10

varFloat/10

y lo vuelves a pasar a String:

progress[0] = String.valueOf(varFloat)

Has probado a hacer algo similar?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de esi92

Barra de progreso con AsynTask

Publicado por esi92 (37 intervenciones) el 14/01/2016 13:00:37
Buenas!!

No era del todo como me decias porque es un arreglo de enteros no de string, pero me sirvió de guía su código, era tan simple como dividirlo entre 10, mire pongo el código de como queda el método:
1
2
3
4
5
6
7
8
9
10
11
12
13
        // Impresión del progreso en tiempo real
        @Override
        protected void onProgressUpdate(Integer... progress) {
 
            int a = progress[0]/10;
            tvProgreso.setText(a + "%");
            progressBar.setProgress(a);
 
            //progressBar.setProgress(progress[0]);
            //tvProgreso.setText(progress[0] + "%");
            tvContador.setText(progress[0].toString());
            Log.d("Threading", "actualizando...");
        }

Un saludo y muchas gracias! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar