在RecyclerView中更新选定的进度栏

时间:2018-09-10 10:36:41

标签: android android-recyclerview recycler-adapter custom-adapter

我有一个自定义适配器,其中包含一些TextViewsProgressBars。当用户单击每一行时,我要显示所选行的ProgressBar并更新值。这是我的适配器:

 public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {
        public TextView from, subject;
        public ProgressBar progressBar;
  public MyViewHolder(View view) {
            super(view);
            from = (TextView) view.findViewById(R.id.from);
            subject = (TextView) view.findViewById(R.id.txt_primary);
            progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
            view.setOnLongClickListener(this);
        }
}

这是我在MainActivity中的点击事件

 @Override
    public void onMessageRowClicked(int position) {
        if (mAdapter.getSelectedItemCount() > 0) {
            enableActionMode(position);

        } else {
                message = messages.get(position);
                message.setRead(true);
                messages.set(position, message);
                mAdapter.notifyDataSetChanged();
               downloadFile(message.getFrom(), getBaseUrl() + message.getLink());
        }
    }

这是我的下载文件

 private void downloadFile(final String filename, final String path){

                    int downloadId = PRDownloader.download(path, dPath, mylFileName)
                            .build()
                            .setOnProgressListener(new OnProgressListener() {
                                @Override
                                public void onProgress(Progress progress) {

                                }
                            })
                            .start(new OnDownloadListener() {
                                @Override
                                public void onDownloadComplete() {

                                    }
                                }

                                @Override
                                public void onError(Error error) {

                                }
                            });
                }
            }).execute(path);
        }
    }

我是一个初学者,我不知道该怎么办。

1 个答案:

答案 0 :(得分:3)

使用它来显示onMessageRowClicked()方法中ProgressBar上的值

 progressBar.setProgress(value);//value will be of Integer type

这样,

 .setOnProgressListener(new OnProgressListener() {
                        @Override
                        public void onProgress(Progress progress) {
                            long progressPercent = progress.currentBytes * 100 / progress.totalBytes;
                            progressBar.setProgress((int) progressPercent);
                            progressBar.setIndeterminate(false);
                        }
                    })