【发布时间】:2018-04-19 13:34:29
【问题描述】:
我有一个 recyclerview,我使用 firebaserecycleradapter 在上面填充数据。列表中的每个项目都包含对 Firebase 存储的引用。因此,当我单击下载按钮(红色按钮)时,下载开始,我可以获得有关视图的信息。当下载正在进行时,我离开活动并返回下载仍在进行中,但从未返回正确的项目视图。
当我回来时如何获得正确的项目视图,以便我可以显示特定项目的下载进度并在下载完成时对该特定项目进行一些更改。
下载按钮背后的代码
storageReference.getFile(zipFile)
.addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.d("visibilitedocSuccess", ""+holder+"|"+key+"|holder"+holder+"|holderid:"+holder.getAdapterPosition()+"|oldpos:"+holder.getOldPosition());
holder.txtProgress.setVisibility(View.GONE);
holder.progressBar.setVisibility(View.GONE);
holder.imgDocumentChecker.setVisibility(View.VISIBLE);
holder.imgDocumentChecker.setImageResource(R.drawable.done_ic);
}
})
.addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
Log.d("visibilitedocProgress:", progress + "% done"+"|holder"+holder+"|holderid:"+holder.getAdapterPosition()+"|oldpos:"+holder.getOldPosition());
holder.txtProgress.setText(((int) progress) + "%");
holder.progressBar.setProgress((int) progress);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("visibilitedocFail:", e + "");
holder.txtProgress.setVisibility(View.GONE);
holder.progressBar.setVisibility(View.GONE);
holder.imgDocumentChecker.setVisibility(View.VISIBLE);
holder.imgDocumentChecker.setImageResource(R.drawable.download_icon);
Toasty.error(DocumentsListActivity.this, "Chargement annulé", Toast.LENGTH_LONG, true).show();
}
});
Logcat 显示以下与 ViewHolder 相关的信息
ViewHolder{ace0130 position=-1 id=-1, oldPos=-1, pLpos:-1 unbound no parent}
请问如何解决?
【问题讨论】:
标签: android android-recyclerview download firebaseui android-viewholder