2017-02-17 1 views
0

J'utilise Async Task pour ajouter des données dans mon recyclerView et définir une barre de progression pour chaque élément de la liste, lorsque je clique sur l'élément que téléchargera et affichera la barre de progression en cours de chargement. après je vais à une autre activité, puis retour processus de téléchargement de travail, mais barre de progression ne montre pas je veux voir cette barre de progression.Barre de progression Android ne se charge pas après le retour à l'activité

Je pense que c'est le problème: auditeur onClick i afficher la barre de progression

View.OnClickListener clickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      CustomViewHolder holder = (CustomViewHolder) view.getTag(); 
      int position = holder.getLayoutPosition(); 

      downloading = true; 
      holder.progressBar.setVisibility(view.VISIBLE); 

      FeedItem feedItem = feedItemList.get(position); 
      String url = feedItem.getUrl(); 
      url = url.replace(" ", "%20"); 
      startDownload(position, url); 
     } 
    }; 

Voici mon code complet

public class SingleMovieAdapter extends RecyclerView.Adapter<CustomViewHolder> { 
    private List<FeedItem> feedItemList; 
    private Context mContext; 
    private Handler handler = new Handler(); 
    private boolean downloading = false; 

    public SingleMovieAdapter(Context context, List<FeedItem> feedItemList) { 
     this.feedItemList = feedItemList; 
     this.mContext = context; 
    } 

    @Override 
    public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.single_movie_songlist_row, null); 

     CustomViewHolder viewHolder = new CustomViewHolder(view); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(CustomViewHolder customViewHolder, int i) { 
     FeedItem feedItem = feedItemList.get(i); 

     String title = feedItem.getTitle(); 
     title = title.replaceAll(" - TamilTunes.com.mp3", ""); 
     customViewHolder.textView.setText(Html.fromHtml(title)); 
     customViewHolder.txtSinger.setText(Html.fromHtml(feedItem.getSinger())); 

     customViewHolder.progressBar.setProgress(feedItem.getProgress()); 

     customViewHolder.textView.setOnClickListener(clickListener); 
     customViewHolder.imageView.setOnClickListener(clickListener); 

     customViewHolder.textView.setTag(customViewHolder); 
     customViewHolder.imageView.setTag(customViewHolder); 

     if (downloading == false) { 
      ColorGenerator generator = ColorGenerator.MATERIAL; 
      int color1 = generator.getRandomColor(); 
      TextDrawable drawable = TextDrawable.builder().buildRound(String.valueOf(i + 1), color1); 
      customViewHolder.imageView.setImageDrawable(drawable); 
     } 

    } 

    View.OnClickListener clickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      CustomViewHolder holder = (CustomViewHolder) view.getTag(); 
      int position = holder.getLayoutPosition(); 
      downloading = true; 
      holder.progressBar.setVisibility(view.VISIBLE); 

      FeedItem feedItem = feedItemList.get(position); 
      String url = feedItem.getUrl(); 
      url = url.replace(" ", "%20"); 
      startDownload(position, url); 
     } 
    }; 

    public void startDownload(final int position, final String url) { 

     Runnable runnable = new Runnable() { 
      int Status = 0; 

      public void run() { 

       System.out.println("URL-" + url); 

       String urlDownload = url; 
       int count = 0; 

       try { 
        URL url = new URL(urlDownload); 
        HttpURLConnection conexion = (HttpURLConnection) url.openConnection(); 
        conexion.setRequestProperty("Accept-Encoding", "identity"); 
        conexion.connect(); 

        int lenghtOfFile = conexion.getContentLength(); 
        Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

        InputStream input = new BufferedInputStream(url.openStream()); 

        // Get File Name from URL 
        String fileName = urlDownload.substring(urlDownload.lastIndexOf('/') + 1, urlDownload.length()); 

        fileName = fileName.replaceAll("%20-%20TamilTunes.com", ""); 
        fileName = fileName.replaceAll("%20", " "); 

        OutputStream output = new FileOutputStream("/sdcard/" + fileName); 

        byte data[] = new byte[1024]; 
        long total = 0; 

        while ((count = input.read(data)) != -1) { 
         System.out.println("Output - total" + total); 
         total += count; 
         Status = ((int) ((total * 100)/lenghtOfFile)); 
         output.write(data, 0, count); 

         // Update ProgressBar 
         handler.post(new Runnable() { 
          public void run() { 
           System.out.println("Output - Status" + Status); 
           updateStatus(position, Status); 
          } 
         }); 

        } 

        output.flush(); 
        output.close(); 
        input.close(); 

       } catch (Exception e) { 
       } 


      } 
     }; 
     new Thread(runnable).start(); 
    } 

    public void updateStatus(int position, int Status) { 
     FeedItem feedItem = feedItemList.get(position); 
     feedItem.setProgress(Status); 
     notifyItemChanged(position); 
    } 

    @Override 
    public int getItemCount() { 
     return (null != feedItemList ? feedItemList.size() : 0); 
    } 
} 

Répondre

0

de Essayez d'ajouter un autre dans votre onBindViewHolder méthode, peut-être votre La vue est regonflée et vous ne définissez pas la vue visible si le téléchargement est en cours.

if (downloading == false) { 
    ColorGenerator generator = ColorGenerator.MATERIAL; 
    int color1 = generator.getRandomColor(); 
    TextDrawable drawable = TextDrawable.builder().buildRound(String.valueOf(i + 1), color1); 
    customViewHolder.imageView.setImageDrawable(drawable); 
} else { 
    holder.progressBar.setVisibility(view.VISIBLE); 
} 
+0

hey ceci ne fonctionne pas, quand je clique sur la barre de progression. je clique sur le bouton de retour, puis je reviens barre de progression ne pas afficher, mais le téléchargement des progrès en arrière-plan – yathavan