Как я могу перебирать элементы индикатора выполнения в RecycleView - PullRequest
0 голосов
/ 31 марта 2019

Я использую 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++) {
child = recyclerView.getChildAt(i);


//In case you need to access ViewHolder:
RecAdapter.ViewHolder v = (RecAdapter.ViewHolder) recyclerView.getChildViewHolder(child);   v.b.setProgress(100);
}
...