首页 > 解决方案 > 更新 RecyclerView 中的选定进度条

问题描述

我有一个自定义适配器,其中包含一些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);
        }
    }

我是初学者,我不知道该怎么做。

标签: androidandroid-recyclerviewcustom-adapter

解决方案


使用它在 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);
                        }
                    })

推荐阅读