首页 > 解决方案 > 如何将连续数据从活动传递到适配器?

问题描述

在这里,我试图将进度条从活动类更新到适配器类。为此,我需要将 int(不断变化)传递给适配器类。可能是这个问题重复了,但许多用户要求制作接口来调用和检索数据。但我不知道如何使用它。

以下代码活动的位置..Asynctask...doINBackground..

filepath.putFile(URI).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            double progressIndouble = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();

String id=a getTxt().toString();// this data is identification string to get position in list//
int progress=(int)progressIndouble;
                            // this variable i need to pass in adapter
                        }
                    });

适配器类

    @Override
    public void onBindViewHolder(@NonNull Viewholder viewHolder, int position) {
        viewholder.progressbar.seProgress(retrieve data from activity)
    }

标签: androidandroid-recyclerviewandroid-adapter

解决方案


正如您所说Adapter,我假设您正在使用ListView,并且您想要更新Listview. 此外,您的适配器中应该有一个List来维护每个 Item 的进度。下面是实现它的伪代码。

在您的适配器中,您应该有与此类似的代码

public void updateProgress(int progress, int itemPos) {
    list.get(itemPos).progress = progress; // update the data in your list
    notifyItemChanged(itemPos); // This will trigger a call to OnBindViewHolder
}

@Override
pubic void onBindViewHolder(@NonNull Viewholder viewHolder, int position) {
    int progress = list.get(position).progress;
    viewHolder.progressBar.setProgress(progress);
}

现在,从您的 Activity 调用 updateProgress(),它将负责更新列表中的数据并刷新 Item。


推荐阅读