使用DownloadManager在RecyclerView中显示下载进度

时间:2016-10-30 06:07:46

标签: android android-recyclerview android-download-manager

我的RecyclerView的任意一行是ProgressBar下载 Button。点击此按钮即可开始下载。我想在其ProgressBar中显示任何下载的进度。有人可以帮帮我吗?

修改

我的下载代码:

@Override
public void onBindViewHolder(final DataHolder holder, final int position) {

    final Item item = items.get(position);

    holder.btnDownload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                String url = item.getLink();
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
                request.setDescription(item.getDescription());
                request.setTitle(item.getTitle());

                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(
                        DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file"+position+".pdf");

                manager.enqueue(request);
        }
    });

1 个答案:

答案 0 :(得分:1)

现在不能给你任何代码示例。但我可以给出一个方法。

  1. 首先,您需要通过任何类型的处理程序或循环计算下载文件的进度,直到完成为止

  2. 在recyclerView适配器中,您可以按notifyItemRangeChanged(int positionStart, int itemCount, Object payload)更新部分查看项目,该项目将调用onBindViewHolder(FeedBaseViewHolder holder, int position, List<Object> payloads)

  3. 在有效负载中,您可以根据需求传递所需的值视角,例如开始进度操作,更新进度,停止进度。

  4. 希望它会对你有所帮助。提前谢谢。