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

问题描述 投票:0回答:1

我使用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);


       } 
    }
    }

我的MainActivity代码 -

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);
}

代码工作正常但我需要检索循环视图中的每个进度条并为每个进度条设置进度。

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

for (int i = 0; i < recyclerView.getChildCount(); i++) {
        RecAdapter.ViewHolder holder = (RecAdapter.ViewHolder) recyclerView.findViewHolderForAdapterPosition(i);
        holder.b.setProgress(50);
    }
java android android-recyclerview progress-bar android-progressbar
1个回答
0
投票

使用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....
 }
© www.soinside.com 2019 - 2024. All rights reserved.