2015-03-25 2 views
2

Загрузка массовых изображений на сервер при нажатии кнопки, но есть одна проблема, когда я нажимаю кнопку «Загрузить все», он начинает загрузку всех изображений элементов списка, но каждый раз, когда он возобновляет новый прогресс для каждая строка списка.Загрузить все элементы списка, используя одиночный AsyncTask

Как и у меня есть 500 элементов списка в списке, поэтому он возобновляет 500 прогресс, тогда как я просто хочу использовать единый прогресс для всех.

Вот мой код, который я использую: снова

public class MainActivity extends Activity { 

    static ListView lstView; 
    private Handler handler = new Handler();; 
    static List<MyData> ImageList; 
    String strPath; 
    int position; 
    File newFile; 
    ViewHolder holder; 
    View v; 
    String fileName; 
    ImageAdapter mAdapter; 
    Button btnUploadAll; 
    int i=0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     btnUploadAll = (Button) findViewById(R.id.btnUploadAll); 

     btnUploadAll.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(ImageList.size()!=0) 
       { 
        new UploadFileAsync().execute(String.valueOf(i)); 
       }  
      } 
     }); 

     /*** Get Images from SDCard ***/ 
     ImageList = getSD(); 
     // ListView and imageAdapter 
     lstView = (ListView) findViewById(R.id.listView); 
     mAdapter = new ImageAdapter(this); 
     lstView.setAdapter(mAdapter); 

    } 

    private List<MyData> getSD() { 
     List<MyData> it = new ArrayList<MyData>(); 
     String root_sd = Environment.getExternalStorageDirectory().toString(); 
     File f = new File(root_sd + "/mydata"); 
     File[] files = f.listFiles(); 
     for (int i = 0; i < files.length; i++) { 
      File file = files[i]; 
      Log.d("Count", file.getPath()); 
      MyData data = new MyData(); 
      data.setImages(file.getPath()); 
      data.setStatusEnable(true); 
      it.add(data); 
     } 
     return it; 
    } 

    static class ViewHolder { 
     public ViewHolder(View convertView) { 
      // TODO Auto-generated constructor stub 
     } 

     TextView textName; 
     ImageView thumbnail; 
     TextView textStatus; 
     Button btnUpload; 

    } 

    public class ImageAdapter extends BaseAdapter { 
     public ImageAdapter(Context c) { 

     } 

     public int getCount() { 
      // TODO Auto-generated method stub 
      return ImageList.size(); 
     } 

     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      // Avoid unneccessary calls to findViewById() on each row, which is 
      // expensive! 

      holder = null; 

      if (convertView == null) { 
       convertView = getLayoutInflater().inflate(
         R.layout.adapter_main, null); 
       holder = new ViewHolder(convertView); 

       // Create a ViewHolder and store references to the children 
       // views 
       holder.textName = (TextView) convertView 
         .findViewById(R.id.textName); 
       holder.thumbnail = (ImageView) convertView 
         .findViewById(R.id.thumbnail); 
       holder.btnUpload = (Button) convertView 
         .findViewById(R.id.btnUpload); 
       holder.textStatus = (TextView) convertView 
         .findViewById(R.id.textStatus); 

       // The tag can be any Object, this just happens to be the 
       // ViewHolder 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      holder.btnUpload.setEnabled(ImageList.get(position) 
        .isStatusEnable()); 
      holder.textStatus.setText(ImageList.get(position).getMessage()); 
      strPath = ImageList.get(position).getImages().toString(); 

      // Get File Name 
      fileName = strPath.substring(strPath.lastIndexOf('/') + 1, 
        strPath.length()); 
      File file = new File(strPath); 
      @SuppressWarnings("unused") 
      long length = file.length(); 
      holder.textName.setText(fileName); 

      final BitmapFactory.Options options = new BitmapFactory.Options(); 

      Bitmap bm = BitmapFactory.decodeFile(strPath, options); 
      holder.thumbnail.setImageBitmap(bm);      

      // btnUpload 
      holder.btnUpload.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        // Upload 
        startUpload(position); 
       } 
      }); 

      return convertView; 

     } 
    } 

    // Upload 

    public void startUpload(final int position) { 

     Runnable runnable = new Runnable() { 

      public void run() { 

       handler.post(new Runnable() { 

        public void run() { 
         v = lstView.getChildAt(position 
           - lstView.getFirstVisiblePosition()); 
         holder = (ViewHolder) v.getTag(); 
         synchronized (this) { 
          ImageList.get(position).setStatusEnable(false); 
          mAdapter.notifyDataSetChanged(); 
         } 

         new UploadFileAsync().execute(String.valueOf(position)); 
        } 
       }); 
      } 
     }; 
     new Thread(runnable).start(); 
    } 

    // Async Upload 
    public class UploadFileAsync extends AsyncTask<String, Void, Void> { 

     private ProgressDialog pDialog; 
     String resServer; 

     protected void onPreExecute() { 
      super.onPreExecute(); 

      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     @Override 
     protected Void doInBackground(String... params) { 
      position = Integer.parseInt(params[0]); 
      int bytesRead, bytesAvailable, bufferSize; 
      byte[] buffer; 
      int maxBufferSize = 1 * 1024 * 1024; 
      int resCode = 0; 
      String resMessage = ""; 

      String lineEnd = "\r\n"; 
      String twoHyphens = "--"; 
      String boundary = "*****"; 

      // File Path 
      String strSDPath = ImageList.get(position).getImages().toString(); 

      // Upload to PHP Script 
      String strUrlServer = "http://10.0.2.2/uploadFile.php"; 

      try { 
       /** Check file on SD Card ***/ 
       File file = new File(strSDPath); 
       if (!file.exists()) { 
        resServer = "{\"StatusID\":\"0\",\"Message\":\"Please check path on SD Card\"}"; 
        return null; 
       } 

       FileInputStream fileInputStream = new FileInputStream(new File(
         strSDPath)); 

       URL url = new URL(strUrlServer); 
       HttpURLConnection conn = (HttpURLConnection) url 
         .openConnection(); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 
       conn.setUseCaches(false); 
       conn.setRequestMethod("POST"); 

       conn.setRequestProperty("Connection", "Keep-Alive"); 
       conn.setRequestProperty("Content-Type", 
         "multipart/form-data;boundary=" + boundary); 

       DataOutputStream outputStream = new DataOutputStream(
         conn.getOutputStream()); 
       outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
       outputStream 
         .writeBytes("Content-Disposition: form-data; name=\"filUpload\";filename=\"" 
           + strSDPath + "\"" + lineEnd); 
       outputStream.writeBytes(lineEnd); 

       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       buffer = new byte[bufferSize]; 

       // Read file 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

       while (bytesRead > 0) { 
        outputStream.write(buffer, 0, bufferSize); 
        bytesAvailable = fileInputStream.available(); 
        bufferSize = Math.min(bytesAvailable, maxBufferSize); 
        bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
       } 

       outputStream.writeBytes(lineEnd); 
       outputStream.writeBytes(twoHyphens + boundary + twoHyphens 
         + lineEnd); 

       // Response Code and Message 
       resCode = conn.getResponseCode(); 
       if (resCode == HttpURLConnection.HTTP_OK) { 
        InputStream is = conn.getInputStream(); 
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

        int read = 0; 
        while ((read = is.read()) != -1) { 
         bos.write(read); 
        } 

        byte[] result = bos.toByteArray(); 
        bos.close(); 

        resMessage = new String(result); 

       } 

       Log.d("resCode=", Integer.toString(resCode)); 
       Log.d("resMessage=", resMessage.toString()); 

       fileInputStream.close(); 
       outputStream.flush(); 
       outputStream.close(); 

       resServer = resMessage.toString(); 

      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 

      return null; 
     } 

     protected void onPostExecute(Void unused) { 
      if(i<imageList.size()){ 
       i++; 
       new UploadFileAsync().execute(String.valueOf(i)); 
      } 
      statusWhenFinish(position, resServer); 
     // dismiss the dialog once product deleted 
      pDialog.dismiss(); 
     } 

    } 

    // When Upload Finish 
    @SuppressWarnings("unused") 
    protected void statusWhenFinish(int position, String resServer) { 

     /*** Default Value ***/ 
     String strStatusID = ""; 
     String strError = ""; 

     try { 

      JSONObject c = new JSONObject(resServer); 
      strStatusID = c.getString("StatusID"); 
      strError = c.getString("Message"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     // // prepare Status 
     if (strStatusID.equals("0")) {   
        ImageList.get(position).setMessage("Failed"); 
        ImageList.get(position).setStatusEnable(true); 
        mAdapter.notifyDataSetChanged(); 

     } else if (strStatusID.equals("1")) { 
        ImageList.get(position).setMessage("Already Exists"); 
        ImageList.get(position).setStatusEnable(false); 
        mAdapter.notifyDataSetChanged(); 

     } else if(strStatusID.equals("2")) { 
        ImageList.get(position).setMessage("Uploaded"); 
        ImageList.get(position).setStatusEnable(false); 
        mAdapter.notifyDataSetChanged(); 
     } else { 

     }  

    } 

    /** 
    * Introduce a class with below attributes to hold a state of each row in 
    * single element 
    * 
    */ 
    public class MyData { 
     /* Image url or path of image in single row */ 
     private String images; 

     /* anme of image in single row */ 
     private String name; 

     /* status ID of image in single row */ 
     private String statusID; 

     /* message of image in single row */ 
     private String message; 

     private boolean statusEnable; 

     public boolean isStatusEnable() { 
      return statusEnable; 
     } 

     public void setStatusEnable(boolean statusEnable) { 
      this.statusEnable = statusEnable; 
     } 

     // Generate getters and setter 
     public String getImages() { 
      return images; 
     } 

     public void setImages(String images) { 
      this.images = images; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getStatusID() { 
      return statusID; 
     } 

     public void setStatusID(String statusID) { 
      this.statusID = statusID; 
     } 

     public String getMessage() { 
      return message; 
     } 

     public void setMessage(String message) { 
      this.message = message; 
     } 

     } 

    } 

ответ

2

К сожалению, я слишком занят для редактирования всего своего кода, поэтому я дам вам указание вместо этого. Во-первых, переместить private ProgressDialog pDialog; в своем классе AsyncTask к глобальной переменной, как:

String fileName; 
ImageAdapter mAdapter; 
Button btnUploadAll; 
int i=0; 
private ProgressDialog pDialog; 

Во-вторых, переместить объект Instantiate для диалога прогресса в:

if(ImageList.size()!=0) 
{ 
    pDialog = new ProgressDialog(MainActivity.this); 
    pDialog.setMessage("Wait..."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(true); 
    pDialog.show(); 
    new UploadFileAsync().execute(String.valueOf(i)); 
} 

В-третьих, закрыть ваш диалог после загрузки всех вашего изображения:

if(i<imageList.size()){ 
    i++; 
    new UploadFileAsync().execute(String.valueOf(i)); 
} 
else { 
    pDialog.dismiss(); 
} 
statusWhenFinish(position, resServer); 
+0

Или вы можете использовать ответ bharat –

0
package com.example.slideanim.temp; 

    import java.io.ByteArrayOutputStream; 
    import java.io.DataOutputStream; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.InputStream; 
    import java.net.HttpURLConnection; 
    import java.net.URL; 
    import java.util.ArrayList; 
    import java.util.List; 

    import org.json.JSONException; 
    import org.json.JSONObject; 

    import android.app.Activity; 
    import android.app.ProgressDialog; 
    import android.content.Context; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.os.Environment; 
    import android.os.Handler; 
    import android.util.Log; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.view.ViewGroup; 
    import android.widget.BaseAdapter; 
    import android.widget.Button; 
    import android.widget.ImageView; 
    import android.widget.ListView; 
    import android.widget.TextView; 

    import com.example.slideanim.R; 

    public class MainActivity extends Activity { 

     static ListView lstView; 
     private Handler handler = new Handler();; 
     static List<MyData> ImageList; 
     String strPath; 
     int position; 
     File newFile; 
     ViewHolder holder; 
     View v; 
     String fileName; 
     ImageAdapter mAdapter; 
     Button btnUploadAll; 
     int i = 0; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.activity_main); 

      btnUploadAll = (Button) findViewById(R.id.btnUploadAll); 

      btnUploadAll.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        if (ImageList.size() != 0) { 
         new UploadFileAsync().execute(String.valueOf(i)); 
        } 
       } 
      }); 

      /*** Get Images from SDCard ***/ 
      ImageList = getSD(); 
      // ListView and imageAdapter 
      lstView = (ListView) findViewById(R.id.listView); 
      mAdapter = new ImageAdapter(this); 
      lstView.setAdapter(mAdapter); 

     } 

     private List<MyData> getSD() { 
      List<MyData> it = new ArrayList<MyData>(); 
      String root_sd = Environment.getExternalStorageDirectory().toString(); 
      File f = new File(root_sd + "/mydata"); 
      File[] files = f.listFiles(); 
      for (int i = 0; i < files.length; i++) { 
       File file = files[i]; 
       Log.d("Count", file.getPath()); 
       MyData data = new MyData(); 
       data.setImages(file.getPath()); 
       data.setStatusEnable(true); 
       it.add(data); 
      } 
      return it; 
     } 

     static class ViewHolder { 
      public ViewHolder(View convertView) { 
       // TODO Auto-generated constructor stub 
      } 

      TextView textName; 
      ImageView thumbnail; 
      TextView textStatus; 
      Button btnUpload; 

     } 

     public class ImageAdapter extends BaseAdapter { 
      public ImageAdapter(Context c) { 

      } 

      public int getCount() { 
       // TODO Auto-generated method stub 
       return ImageList.size(); 
      } 

      public Object getItem(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      public long getItemId(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      public View getView(final int position, View convertView, 
        ViewGroup parent) { 
       // Avoid unneccessary calls to findViewById() on each row, which is 
       // expensive! 

       holder = null; 

       if (convertView == null) { 
        convertView = getLayoutInflater().inflate(
          R.layout.adapter_main, null); 
        holder = new ViewHolder(convertView); 

        // Create a ViewHolder and store references to the children 
        // views 
        holder.textName = (TextView) convertView 
          .findViewById(R.id.textName); 
        holder.thumbnail = (ImageView) convertView 
          .findViewById(R.id.thumbnail); 
        holder.btnUpload = (Button) convertView 
          .findViewById(R.id.btnUpload); 
        holder.textStatus = (TextView) convertView 
          .findViewById(R.id.textStatus); 

        // The tag can be any Object, this just happens to be the 
        // ViewHolder 
        convertView.setTag(holder); 
       } else { 
        holder = (ViewHolder) convertView.getTag(); 
       } 
       holder.btnUpload.setEnabled(ImageList.get(position) 
         .isStatusEnable()); 
       holder.textStatus.setText(ImageList.get(position).getMessage()); 
       strPath = ImageList.get(position).getImages().toString(); 

       // Get File Name 
       fileName = strPath.substring(strPath.lastIndexOf('/') + 1, 
         strPath.length()); 
       File file = new File(strPath); 
       @SuppressWarnings("unused") 
       long length = file.length(); 
       holder.textName.setText(fileName); 

       final BitmapFactory.Options options = new BitmapFactory.Options(); 

       Bitmap bm = BitmapFactory.decodeFile(strPath, options); 
       holder.thumbnail.setImageBitmap(bm); 

       // btnUpload 
       holder.btnUpload.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         // Upload 
         startUpload(position); 
        } 
       }); 

       return convertView; 

      } 
     } 

     // Upload 

     public void startUpload(final int position) { 

      Runnable runnable = new Runnable() { 

       public void run() { 

        handler.post(new Runnable() { 

         public void run() { 
          v = lstView.getChildAt(position 
            - lstView.getFirstVisiblePosition()); 
          holder = (ViewHolder) v.getTag(); 
          synchronized (this) { 
           ImageList.get(position).setStatusEnable(false); 
           mAdapter.notifyDataSetChanged(); 
          } 

          new UploadFileAsync().execute(String.valueOf(position)); 
         } 
        }); 
       } 
      }; 
      new Thread(runnable).start(); 
     } 

     // Async Upload 
     public class UploadFileAsync extends AsyncTask<String, Void, Void> { 

      private ProgressDialog pDialog; 
      String resServer; 

      protected void onPreExecute() { 
       super.onPreExecute(); 

       pDialog = new ProgressDialog(MainActivity.this); 
       pDialog.setMessage("Wait..."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(true); 
       pDialog.show(); 
      } 

      @Override 
      protected Void doInBackground(String... params) { 
       if (ImageList == null || ImageList.size() == 0) 
        return null; 

//below you need to change 
       for (MyData myData : ImageList) { 
        // position = Integer.parseInt(params[0]); 
        int bytesRead, bytesAvailable, bufferSize; 
        byte[] buffer; 
        int maxBufferSize = 1 * 1024 * 1024; 
        int resCode = 0; 
        String resMessage = ""; 

        String lineEnd = "\r\n"; 
        String twoHyphens = "--"; 
        String boundary = "*****"; 

        // File Path 
        String strSDPath = myData.getImages().toString(); 

        // Upload to PHP Script 
        String strUrlServer = "http://10.0.2.2/uploadFile.php"; 

        try { 
         /** Check file on SD Card ***/ 
         File file = new File(strSDPath); 
         if (!file.exists()) { 
          resServer = "{\"StatusID\":\"0\",\"Message\":\"Please check path on SD Card\"}"; 
          return null; 
         } 

         FileInputStream fileInputStream = new FileInputStream(
           new File(strSDPath)); 

         URL url = new URL(strUrlServer); 
         HttpURLConnection conn = (HttpURLConnection) url 
           .openConnection(); 
         conn.setDoInput(true); 
         conn.setDoOutput(true); 
         conn.setUseCaches(false); 
         conn.setRequestMethod("POST"); 

         conn.setRequestProperty("Connection", "Keep-Alive"); 
         conn.setRequestProperty("Content-Type", 
           "multipart/form-data;boundary=" + boundary); 

         DataOutputStream outputStream = new DataOutputStream(
           conn.getOutputStream()); 
         outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
         outputStream 
           .writeBytes("Content-Disposition: form-data; name=\"filUpload\";filename=\"" 
             + strSDPath + "\"" + lineEnd); 
         outputStream.writeBytes(lineEnd); 

         bytesAvailable = fileInputStream.available(); 
         bufferSize = Math.min(bytesAvailable, maxBufferSize); 
         buffer = new byte[bufferSize]; 

         // Read file 
         bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

         while (bytesRead > 0) { 
          outputStream.write(buffer, 0, bufferSize); 
          bytesAvailable = fileInputStream.available(); 
          bufferSize = Math.min(bytesAvailable, maxBufferSize); 
          bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
         } 

         outputStream.writeBytes(lineEnd); 
         outputStream.writeBytes(twoHyphens + boundary + twoHyphens 
           + lineEnd); 

         // Response Code and Message 
         resCode = conn.getResponseCode(); 
         if (resCode == HttpURLConnection.HTTP_OK) { 
          InputStream is = conn.getInputStream(); 
          ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

          int read = 0; 
          while ((read = is.read()) != -1) { 
           bos.write(read); 
          } 

          byte[] result = bos.toByteArray(); 
          bos.close(); 

          resMessage = new String(result); 

         } 

         Log.d("resCode=", Integer.toString(resCode)); 
         Log.d("resMessage=", resMessage.toString()); 

         fileInputStream.close(); 
         outputStream.flush(); 
         outputStream.close(); 

         resServer = resMessage.toString(); 

        } catch (Exception ex) { 
         ex.printStackTrace(); 
        } 
       } 
       return null; 
      } 

      protected void onPostExecute(Void unused) { 
       statusWhenFinish(position, resServer); 
       // dismiss the dialog once product deleted 
       pDialog.dismiss(); 
      } 

     } 

     // When Upload Finish 
     @SuppressWarnings("unused") 
     protected void statusWhenFinish(int position, String resServer) { 

      /*** Default Value ***/ 
      String strStatusID = ""; 
      String strError = ""; 

      try { 

       JSONObject c = new JSONObject(resServer); 
       strStatusID = c.getString("StatusID"); 
       strError = c.getString("Message"); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      // // prepare Status 
      if (strStatusID.equals("0")) { 
       ImageList.get(position).setMessage("Failed"); 
       ImageList.get(position).setStatusEnable(true); 
       mAdapter.notifyDataSetChanged(); 

      } else if (strStatusID.equals("1")) { 
       ImageList.get(position).setMessage("Already Exists"); 
       ImageList.get(position).setStatusEnable(false); 
       mAdapter.notifyDataSetChanged(); 

      } else if (strStatusID.equals("2")) { 
       ImageList.get(position).setMessage("Uploaded"); 
       ImageList.get(position).setStatusEnable(false); 
       mAdapter.notifyDataSetChanged(); 
      } else { 

      } 

     } 

     /** 
     * Introduce a class with below attributes to hold a state of each row in 
     * single element 
     * 
     */ 
     public class MyData { 
      /* Image url or path of image in single row */ 
      private String images; 

      /* anme of image in single row */ 
      private String name; 

      /* status ID of image in single row */ 
      private String statusID; 

      /* message of image in single row */ 
      private String message; 

      private boolean statusEnable; 

      public boolean isStatusEnable() { 
       return statusEnable; 
      } 

      public void setStatusEnable(boolean statusEnable) { 
       this.statusEnable = statusEnable; 
      } 

      // Generate getters and setter 
      public String getImages() { 
       return images; 
      } 

      public void setImages(String images) { 
       this.images = images; 
      } 

      public String getName() { 
       return name; 
      } 

      public void setName(String name) { 
       this.name = name; 
      } 

      public String getStatusID() { 
       return statusID; 
      } 

      public void setStatusID(String statusID) { 
       this.statusID = statusID; 
      } 

      public String getMessage() { 
       return message; 
      } 

      public void setMessage(String message) { 
       this.message = message; 
      } 

     } 

    } 
+1

напишите описание с кодом. – SilentKiller

0

При загрузке изображения первого изображения pDialog и при загрузке последнего изображения уберите pDialog.

ProgressDialog pDialog; 

public void showProgressDialog(){ 

    pDialog = new ProgressDialog(MainActivity.this); 
    pDialog.setMessage("Wait..."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(true); 
    pDialog.show(); 
} 

public void onPreExecute(..){ 

if(pDialog==null) 
    showProgressDialog() 
} 

public void onPostExecute(..){ 
..... 
....... 
if(i==imageList.size(){ 
    if(pDialog!=null) pDialog.dismiss(); 
} 
0

Вы можете использовать отложенную загрузку с asyntask и загрузить все изображения в первый раз и сохранить его в сд карты или таблицы, если вы к нему доступ второй раз, проверка времени состояние с сд карты или таблицы ее все доступны или нет и использовать его с SD-карты или таблицы http://codehenge.net/blog/2011/06/android-development-tutorial-asynchronous-lazy-loading-and-caching-of-listview-images/

Смежные вопросы