2016-04-16 17 views
2

私はアイテム(行)からなる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合格しています。アップロードクラスでプログレスバーが更新されるようにします。私はこの問題を解決する方法を知りません。

答えて

2

てみてください事前に感謝を正しく設定するために、あなたのonBindViewHolderコールに続いて、この

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

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

のようなあなたのデータのためのあなたの進行状況をこれらのメソッドを別のフラグを追加します。それはの一部のみ解決される

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

問題。一度にスキャンサイズ以上の行がアップロードされるときは常に。ある行の進捗バーが別の行更新のために表示されています。 – sandesh

+0

@sandesh、実際にこの問題に対処しています。リサイクラー行の数が画面の高さをカバーするのに十分な大きさである場合、リサイクラーは 'onBindViewHolder'を呼び出して既存のビューを指定された位置の新しい項目にリサイクルします。試したコードを投稿できますか? – satorikomeiji