2017-02-17 23 views
0

Я использую Async Task для добавления данных в свой recyclerView и установки полосы выполнения для каждого элемента списка, когда я нажимаю на элемент, который будет загружен элемент, и индикатор выполнения, который загружается. после того, как я перейду к другому действию, верните обратно процесс загрузки, но индикатор выполнения не отображается Я хочу видеть, что индикатор выполнения.Баланс прогресса Android не загружается после возврата к активности

Я думаю, что это проблема: в OnClick слушателя я показать прогресс бар

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 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); 
    } 
} 

ответ

0

Попробуйте добавить еще в вашем onBindViewHolder-метод, может быть, ваш view получает повторно заново, и вы не устанавливаете представление на видимое, если загрузка выполняется.

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

эй это не работает, когда я нажимаю кнопку progressbar show. я нажимаю кнопку «Назад», а индикатор возврата не отображается, но загрузка выполняется в фоновом режиме – yathavan

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

  • Нет связанных вопросов^_^