私はアイテム(行)からなるRecyclerviewがあるアンドロイドプロジェクトに取り組んでいます。実行時に、アイテム(行)がRecyclerviewに追加されるたびに、サーバーにアップロードが開始され、そのアイテム(行)のプログレスバーが更新されます。ここの各Itemはファイルです。項目が画面のサイズまで追加されている限り、すべてがうまくいっています。アイテムが画面の限界を超えたら、私はスクロールする必要があります。スクロール中は、プログレスバーが別のアイテムに更新されます。 2つ以上の項目に時々あります。グーグル・グーグルでは、Recyclerviewが既に作成されたビューアを再利用していることがわかりました。ここRecyclerviewのプログレスバー
は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合格しています。アップロードクラスでプログレスバーが更新されるようにします。私はこの問題を解決する方法を知りません。
問題。一度にスキャンサイズ以上の行がアップロードされるときは常に。ある行の進捗バーが別の行更新のために表示されています。 – sandesh
@sandesh、実際にこの問題に対処しています。リサイクラー行の数が画面の高さをカバーするのに十分な大きさである場合、リサイクラーは 'onBindViewHolder'を呼び出して既存のビューを指定された位置の新しい項目にリサイクルします。試したコードを投稿できますか? – satorikomeiji