Java 如何在RecyclerView中设置多个进度条的进度

Java 如何在RecyclerView中设置多个进度条的进度,java,android,android-recyclerview,progress-bar,android-progressbar,Java,Android,Android Recyclerview,Progress Bar,Android Progressbar,我正在使用RecyclerView以幻灯片和适配器的形式查看许多进度条 这是我的适配器类 public class RecAdapter extends RecyclerView.Adapter<RecAdapter.ViewHolder> { private static final String TAG = "RecAdapter"; private ArrayList progressbars = new ArrayList<>(); private Co

我正在使用RecyclerView以幻灯片和适配器的形式查看许多进度条

这是我的适配器类

    public class RecAdapter extends RecyclerView.Adapter<RecAdapter.ViewHolder> {

private static final String TAG = "RecAdapter";
private ArrayList progressbars = new ArrayList<>();
private Context pcontex;
public RecAdapter(Context pcontex ,ArrayList progressbars) {
    this.progressbars = progressbars;
    this.pcontex = pcontex;
}
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.progress,viewGroup,false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
    Log.d(TAG, "onBindViewHolder: called");
}

@Override
public int getItemCount() {
    return progressbars.size() ;
}
public class ViewHolder extends RecyclerView.ViewHolder {

    ProgressBar b ;
    ConstraintLayout parent;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
       b = itemView.findViewById(R.id.progressBar);
        parent= itemView.findViewById(R.id.parent);


       } 
    }
    }
公共类RecAdapter扩展了RecyclerView.Adapter{
私有静态最终字符串TAG=“RecAdapter”;
私有ArrayList progressbars=新ArrayList();
私有上下文pcontex;
公共重新适配器(上下文pcontex、ArrayList progressbars){
this.progressbars=progressbars;
this.pcontex=pcontex;
}
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.progress,viewGroup,false);
ViewHolder=新的ViewHolder(视图);
报税表持有人;
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder ViewHolder,int i){
Log.d(标记“onBindViewHolder:called”);
}
@凌驾
public int getItemCount(){
返回progressbar.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
进度条b;
约束年轻父母;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
b=itemView.findViewById(R.id.progressBar);
parent=itemView.findviewbyd(R.id.parent);
} 
}
}
我的主要活动代码-

Prog = new ArrayList<>();  b2 = findViewById(R.id.progressBar) ;
b = findViewById(R.id.progressBar);  
probitmap();

private void probitmap(){

Log.d(TAG, "probitmap: preparing bit maps");
Prog.add(b); 
Prog.add(b2);

Recycle();// this method is out of on create
}

private void  Recycle(){

Log.d(TAG, "Recycle: init recycleview");
recyclerView =findViewById(R.id.Rec);
RecAdapter Adapter = new RecAdapter(this,Prog);
recyclerView.setAdapter(Adapter);
        LinearLayoutManager layoutManager
        = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(layoutManager);
}
Prog=newarraylist();b2=findViewById(R.id.progressBar);
b=findViewById(R.id.progressBar);
probitmap();
私有void probitmap(){
Log.d(标签“probitmap:准备位图”);
程序加(b);
程序添加(b2);
Recycle();//此方法在创建时已过期
}
私有无效回收(){
Log.d(标记“Recycle:init recycleview”);
recyclerView=findViewById(R.id.Rec);
RecAdapter适配器=新的RecAdapter(此,程序);
recyclerView.setAdapter(适配器);
直线布局经理布局经理
=新的LinearLayoutManager(此,LinearLayoutManager.HORIZONTAL,false);
recyclerView.setLayoutManager(layoutManager);
}
代码运行得很好,但我需要检索recycle视图中的每个进度条,并为每个进度条设置进度

我尝试了多种方法,但都不起作用。这是我试过的-

for (int i = 0; i < recyclerView.getChildCount(); i++) {
        RecAdapter.ViewHolder holder = (RecAdapter.ViewHolder) recyclerView.findViewHolderForAdapterPosition(i);
        holder.b.setProgress(50);
    }
for(int i=0;i
使用
OnBindViewHolder
管理回收商生成的每一行

 @Override
 public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.b.setProgress(progressbar.get(i)); //i is the position of the recycler
        viewHolder.b.setListener....
 }

使用
OnBindViewHolder
管理回收商生成的每个“行”

 @Override
 public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.b.setProgress(progressbar.get(i)); //i is the position of the recycler
        viewHolder.b.setListener....
 }

谢谢,但是setprogress方法需要一个整数,我没有将其git:(为什么要使用listener,很抱歉,我是一个初学者listener只是一个例子。你可以从那里处理任何你想处理的事情。用你想传递给进度条的整数值填充适配器上的数组;按顺序。如果你传递的是进度条数组,你可以始终这样做:viewHolder.b.setProgress(progressbar.get(i).getProgress());谢谢,但是setprogress方法接受一个整数,我没有将其git:(为什么要使用listener,很抱歉,我是一个初学者listener只是一个例子。你可以从那里处理任何你想处理的事情。用你想传递给进度条的整数值填充适配器上的数组;按顺序。如果你传递的是进度条数组,你可以始终这样做:viewHolder.b.setProgress(progressbar.get(i).getProgress());