【发布时间】:2020-01-06 01:33:04
【问题描述】:
我正在尝试从 Firebase Firestore 检索图像。我能够成功检索 RecyclerView 中的文本,但是我不确定如何检索图像。
不幸的是,我看过类似的问题,但没有任何帮助。
列表活动:
//initialize firestore
db = FirebaseFirestore.getInstance();
//initialize views
mRecyclerView = findViewById(R.id.resultRecycle);
//set recycler view properties
mRecyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);
//show data in recycler view
showData();
}
private void showData() {
db.collection("Item")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
//called when data is retrieved
//show data
for(DocumentSnapshot doc: task.getResult()){
Model model = new
Model(doc.getString("id"),
doc.getString("Title"),
doc.getString("Location"),
//STUCK HERE
);
modelList.add(model);
}
//adapter
adapter = new CustomAdapter(ListActivity.this, modelList);
//set adapter to recycler view
mRecyclerView.setAdapter(adapter);
}
});
自定义适配器:
public void onItemClick(View view, int position) {
//this will be called when user clicks an item
//show data on toast when clicking
String title = modelList.get(position).getTitle();
String location = modelList.get(position).getLocation();
String url = modelList.get(position).getUrl();
}
@Override
public void onItemLongClick(View view, int position) {
//this will be called when user clicks long item
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int i) {
//bind views /set data
holder.mTitle.setText(modelList.get(i).getTitle());
holder.mLocation.setText(modelList.get(i).getLocation());
Picasso.get().load(modelList.get(i).getUrl()).into(holder.mUrl);
}
【问题讨论】:
-
能把图片和数据库结构的url发一下吗?
-
请将您的数据库结构添加为屏幕截图。也请回复@AlexMamo
-
@Ashish 请看上面的截图
-
@Neha 您确定您提供的图片网址在您的存储中的图片位于 Firebase 数据库中显示的同一位置之前无法使用。
-
是的,我知道这是安卓设备中的位置,只是问她为什么不做
doc.getString("Img");来检索它
标签: android firebase android-recyclerview google-cloud-firestore data-retrieval