gpt4 book ai didi

android - Recyclerview 中的进度条

转载 作者:搜寻专家 更新时间:2023-11-01 09:48:56 24 4
gpt4 key购买 nike

我正在开发一个 android 项目,其中将有一个由项目(行)组成的 Recyclerview。在运行时,无论何时将项目(行)添加到 Recyclerview,它都会开始上传到服务器并更新该项目(行)中的进度条。这里的每个项目都是一个文件。只要将项目添加到屏幕大小,一切都会好起来的。每当项目超过屏幕限制时,我都需要滚动。滚动时,进度条在不同的项目上更新。有时在两个或更多项目上。经过大量谷歌搜索后,我明白这是因为 Recyclerview 重用了已经创建的 View 持有者。

这是我的recyclerview适配器代码:

    public class MyViewHolder extends RecyclerView.ViewHolder {

private TextView filename;

private ProgressBar file_progressbar;

public MyViewHolder(View v) {

super(v);

filename = (TextView) v.findViewById(R.id.filename);

file_progressbar = (ProgressBar) v.findViewById(R.id.file_progressbar);

}

}


public void onBindViewHolder(final MyViewHolder holder, final int position) {


final String fname = fDataset.get((fDataset.size() - 1) - position);

File f = new File(fname);

holder.filename.setText(f.getName());
if(internetchek.isNetworkAvailable(this.ctx))
{

holder.file_progressbar.setVisibility(View.VISIBLE);

upload up = new upload(this.ctx,fname,holder.file_progressbar,"uploadstart");

up.execute();
}
else {

Toast.makeText(this.ctx, "Offline", Toast.LENGTH_LONG).show();

}


}

我已将 holder.file_progressbar 传递给上传类。这样进度条就会在 Upload 类中更新。我不知道如何解决这个问题。提前致谢

最佳答案

像这样尝试为您的数据添加单独的标志

private boolean isItemUpdating(int position) {
return mDataUpdatingFlags[position];
}

private void setItemUpdating(int position, boolean isUpdating) {
mDataUpdatingFlags[position] = isUpdating;
}

然后在您的 onBindViewHolder 中调用这些方法来正确设置您的进度:

if (isItemUpdating(position) {
holder.showProgressBar();
} else {
holder.hideProgressBar();
}

关于android - Recyclerview 中的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36666636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com