【发布时间】:2020-07-20 14:19:47
【问题描述】:
我的应用显示自定义视频列表,并可选择使用 IntentService 进行下载。自定义列表使用 recyclerView 系统显示在 UI 上。以下是名单图片
单击并下载视频后,下载图标会变为蓝色,如上图所示列表的第一个子项所示,当尚未下载时,它会显示默认的黑色下载图标。我已经串起了一些代码让它工作,挑战是,当应用程序重新启动时,即使之前下载过,下载图标也会恢复到默认颜色。如何更新和保存对下载图标颜色所做的更改,以便在重新启动应用程序时反映出来?我了解 SharedPreference 类可用于保存对应用程序所做的更改,但我不知道如何实现这一点。希望能提供任何帮助来实现这一目标
下面是我的 onCreate mtd
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lecture);
setUpRecyclerView();
下面是我创建 setUpRecyclerView() 的地方
private void setUpRecyclerView() {
Query query = lectureRef.orderBy("position", Query.Direction.ASCENDING);
FirestoreRecyclerOptions<LectureClasses> options = new FirestoreRecyclerOptions.Builder<LectureClasses>()
.setQuery(query, LectureClasses.class).build();
adapter = new LectureClassesAdapter(options);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
下面是我在适配器类中设置 onViewItemclick @overide 方法的调用
@Override
public void onViewItemClick(DocumentSnapshot snapshot, int position, View itemView) {
//init variables
CircularProgressBar progressBarCir = itemView.findViewById(R.id.progress_circular);
progressBarCir.setProgressMax(100f);
ImageView downloadImage = itemView.findViewById(R.id.download);
PopupMenu popupMenu = new PopupMenu(LectureActivity.this,downloadImage);
LectureClasses lectureClasses = snapshot.toObject(LectureClasses.class);
lectureClasses = adapter.getItem(position);
String titleNow = lectureClasses.getTitle();
String urlNow = lectureClasses.getUrl();
class DownloadReceiver extends ResultReceiver {
public DownloadReceiver(Handler handler) {
super(handler);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == TichaDownloadService.UPDATE_PROGRESS) {
int progress = resultData.getInt("progress");
progressBarCir.setProgress(progress);
downloadImage.setVisibility(View.GONE);
progressBarCir.setVisibility(View.VISIBLE);
Log.i("STATUS","DOWNLOADING>>>");
if (progress == 100) {
progressBarCir.setVisibility(View.GONE);
downloadImage.setImageDrawable(getDrawable(R.drawable.download_blue));
downloadImage.setVisibility(View.VISIBLE);
}
}else {
Log.i("STATUS"," NOT DOWNLOADING,BOSS");
}
}
}
}
【问题讨论】:
-
你在哪里保存文件(视频)??
-
@Javad Dehban,在设备的外部存储器上。不是标清
-
到什么地址文件?
-
我不确定我是否理解你,@Javad Dehban,但如果你指的是位置 uri,它看起来像这样
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()+videoFile;
标签: java android android-recyclerview android-adapter