我想在MVVM模型中实现非常简单的功能:从Firestore下载数据,同时向用户显示进度。视图,视图模型和存储库中应该有什么?检查了Android文档,但不清楚如何实现。有人可以建议吗。
编辑
已使用以下方法创建了存储库类,用于将数据从存储库类传递到ViewModel。
public List<Passion> downloadpassionlist()
{
new downloadPassionAsyncTask(mPassionDao,fsDB, new
OnDownLoadPassionList() {
@Override
public List<Passion> OnResult(List<Passion> passionList) {
passions = passionList; //Passionlist contains required data.
return passionList;
}
}).execute();
return passions;//Getting 0 value here
}
在存储库类中创建的Asynch类,用于从Firestore中获取数据。
public static class downloadPassionAsyncTask extends AsyncTask<Passion,
Void, List<Passion>> {
private PassionDao mAsyncTaskDao;
private Firestore_dB firesDB;
private String resp;
ProgressDialog progressDialog;
OnDownLoadPassionList monDownLoadPassionList;
List<Passion> result = new ArrayList<>();
public interface OnSuccess
{
public List<Passion> OnComplete(List<Passion> passionList);
}
downloadPassionAsyncTask(PassionDao dao,Firestore_dB
fsDB,OnDownLoadPassionList onDownLoadPassionList) {
mAsyncTaskDao = dao;
firesDB = fsDB;
monDownLoadPassionList = onDownLoadPassionList;
}
@Override
protected List<Passion> doInBackground(final Passion... params) {
firesDB.getPassionListfill(new OnSuccess() {
@Override
public List<Passion> OnComplete(List<Passion> passionList)
{//1st callback
monDownLoadPassionList.OnResult(passionList);//2nd callback
return null;
}
});
return result;
}
}
用于存储数据的Firestore方法
public List<Passion>
getPassionListfill(PassionRepository.downloadPassionAsyncTask.OnSuccess
callback)
{
List<Passion>updatepassionlist = new ArrayList<>();
CollectionReference people_ref =
this.get_collection_firestore("Passion");
Log.d(TAG, "Call Back check outside");
people_ref.get().addOnCompleteListener(new
OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful())
{Log.d(TAG, "Call Back check");
for(QueryDocumentSnapshot document : task.getResult())
{
Passion passion = document.toObject(Passion.class);
// Log.d(TAG, "Call Back check"+passion);
updatepassionlist.add(passion);
}
}
else {
Log.d(TAG, "Error getting documents: ",
task.getException());
}
callback.OnComplete(updatepassionlist);
}
});
return updatepassionlist;
}
我的查询:1.在方法downloadpassionlist中没有获得数据热情变量。此值将传递给ViewModel,然后传递给Activity以进行查看。 2.在获取数据时,要显示下载图像。如何实施以及在何处实施?