Как я могу отправить несколько раз, чтобы вызвать тему на Android?

У меня есть AsyncTask , который загружает мне изображение из Интернета, но я хочу, чтобы я загрузил несколько изображений и вставил их в список объектов, которые я создал ранее.

Код:

    for(int i = 0; i < listaSeriesString.size();)
    {
        if(hiloDeDescarga.getStatus().equals(AsyncTask.Status.RUNNING))
        {

        }
        else
        {
            i = i + 6;
            hiloDeDescarga.execute(urlServidor + listaSeriesString.get(i + 5));
        }
    }

Код темы:

public class DescargarImagenes extends AsyncTask<String,Void,Bitmap>
{
    VentanaInterfazSeries ventana;
    int posicion = 0;

public DescargarImagenes(int actual,VentanaInterfazSeries ventanaInterfazSeries)
{
    ventana = ventanaInterfazSeries;
    posicion = actual;
}

@Override
protected Bitmap doInBackground(String... params)
{
    Bitmap imagen = null;
    imagen = getBitmapFromURL(params[0]);
    return imagen;
}

@Override
protected void onPostExecute(Bitmap bitmap)
{
    String nombreSerie = ventana.listaSeriesString.get(posicion);
    String generoSerie = ventana.listaSeriesString.get(posicion + 1);
    String sinopsisSerie = ventana.listaSeriesString.get(posicion + 2);
    String clasificacionSerie = ventana.listaSeriesString.get(posicion + 3);
    String temporadasSerie = ventana.listaSeriesString.get(posicion + 4);

    posicion = posicion + 6;

    if(posicion >= ventana.listaSeriesString.size())
    {
        Bitmap nuevoTam = Bitmap.createScaledBitmap(bitmap,160, 220, true);

        ventana.listaSeries.add(new Serie(nombreSerie, generoSerie, sinopsisSerie, clasificacionSerie, temporadasSerie, nuevoTam));

        ventana.cargandoInterfaz.dismiss();

        ventana.series.setLayoutManager(new LinearLayoutManager(ventana,LinearLayoutManager.VERTICAL,false));

        ventana.series.setAdapter(new AdaptadorSerie(ventana.listaSeries, new ClickAlObjeto()
        {
            @Override
            public void Click(View v, int posicion)
            {

            }
        }));
    }
    else
    {
        Bitmap nuevoTam = Bitmap.createScaledBitmap(bitmap,160, 220, true);
        String siguienteImagenSerie = ventana.listaSeriesString.get(posicion + 5);

        ventana.listaSeries.add(new Serie(nombreSerie,generoSerie,sinopsisSerie,clasificacionSerie,temporadasSerie,nuevoTam));

        DescargarImagenes deNuevo = new DescargarImagenes(posicion,ventana);
        deNuevo.execute("http://192.168.15.63/Imagenes/" + siguienteImagenSerie);
    }
}

public static Bitmap getBitmapFromURL(String url)
{
    try
    {
        URL Url = new URL(url);

        HttpURLConnection connection = (HttpURLConnection) Url.openConnection();

        connection.setDoInput(true);
        connection.connect();

        InputStream input = connection.getInputStream();

        Bitmap imagen = BitmapFactory.decodeStream(input);

        return imagen;
    }
    catch (IOException e)
    {
        e.printStackTrace();

        return null;
    }
}

}

Я решил, что я сделал, когда вы звоните onPosteExecute () проверяет, были ли они уже всеми изображениями в списке, если нет, создайте новый экземпляр потока и выполните его, только на этот раз со следующим изображением. Так как я закончил загрузку всех изображений, я создал адаптер для отображения их в RecyclerView .

0
задан 28.12.2016, 22:09
0 ответов
DescargarImagenes hiloDeDescarga = new DescargarImagenes(0,this);
hiloDeDescarga.execute(urlServidor + listaSeriesString.get(5));

public class DescargarImagenes extends AsyncTask<String,Void,Bitmap>
{
VentanaInterfazSeries ventana;
int posicion = 0;

public DescargarImagenes(int actual,VentanaInterfazSeries ventanaInterfazSeries)
{
    ventana = ventanaInterfazSeries;
    posicion = actual;
}

@Override
protected Bitmap doInBackground(String... params)
{
    Bitmap imagen = null;
    imagen = getBitmapFromURL(params[0]);
    return imagen;
}

@Override
protected void onPostExecute(Bitmap bitmap)
{
    String nombreSerie = ventana.listaSeriesString.get(posicion);
    String generoSerie = ventana.listaSeriesString.get(posicion + 1);
    String sinopsisSerie = ventana.listaSeriesString.get(posicion + 2);
    String clasificacionSerie = ventana.listaSeriesString.get(posicion + 3);
    String temporadasSerie = ventana.listaSeriesString.get(posicion + 4);

    posicion = posicion + 6;

    if(posicion >= ventana.listaSeriesString.size())
    {
        Bitmap nuevoTam = Bitmap.createScaledBitmap(bitmap,160, 220, true);

        ventana.listaSeries.add(new Serie(nombreSerie, generoSerie, sinopsisSerie, clasificacionSerie, temporadasSerie, nuevoTam));

        ventana.cargandoInterfaz.dismiss();

        ventana.series.setLayoutManager(new  LinearLayoutManager(ventana,LinearLayoutManager.VERTICAL,false));

        ventana.series.setAdapter(new AdaptadorSerie(ventana.listaSeries, new ClickAlObjeto()
        {
            @Override
            public void Click(View v, int posicion)
            {

            }
        }));
   }
   else
   {
       Bitmap nuevoTam = Bitmap.createScaledBitmap(bitmap,160, 220, true);
       String siguienteImagenSerie = ventana.listaSeriesString.get(posicion + 5);

       ventana.listaSeries.add(new Serie(nombreSerie,generoSerie,sinopsisSerie,clasificacionSerie,temporadasSerie,nuevoTam));

       DescargarImagenes deNuevo = new DescargarImagenes(posicion,ventana);
    deNuevo.execute("http://192.168.15.63/Imagenes/" + siguienteImagenSerie);
    }
}

   public static Bitmap getBitmapFromURL(String url)
   {
       try
       {
        URL Url = new URL(url);

        HttpURLConnection connection = (HttpURLConnection) Url.openConnection();

        connection.setDoInput(true);
        connection.connect();

        InputStream input = connection.getInputStream();

        Bitmap imagen = BitmapFactory.decodeStream(input);

        return imagen;
        }
    catch (IOException e)
    {
        e.printStackTrace();

        return null;
    }
}
0
ответ дан 03.12.2019, 17:57

Теги

Похожие вопросы