Android 如何显示多个用户';在RecyclerView上使用Firebase存储的图像
大家好,我正在努力掌握如何从Firebase存储中检索数据并将其显示到我的Android 如何显示多个用户';在RecyclerView上使用Firebase存储的图像,android,firebase,android-recyclerview,firebase-storage,Android,Firebase,Android Recyclerview,Firebase Storage,大家好,我正在努力掌握如何从Firebase存储中检索数据并将其显示到我的RecyclerView上的想法。按照我的应用程序的设置方式,每个用户都可以设置自己的用户配置文件图片。因此,我存储图片以满足每个用户的需要的方法是根据文件的UID命名文件。见下文: 这是我的Firestore 现在,我很难知道如何在我的RecyclerView上显示它。目前,myRecyclerView可以显示用户的全名、电子邮件和分数,如下所示: 以下是我目前正在使用的代码: 用户模型 public class
RecyclerView
上的想法。按照我的应用程序的设置方式,每个用户都可以设置自己的用户配置文件图片。因此,我存储图片以满足每个用户的需要的方法是根据文件的UID
命名文件。见下文:
这是我的Firestore
现在,我很难知道如何在我的RecyclerView
上显示它。目前,myRecyclerView
可以显示用户的全名
、电子邮件
和分数
,如下所示:
以下是我目前正在使用的代码:
用户模型
public class UserModel {
private String FullName;
private String Email;
private long Score;
public UserModel() {
}
public UserModel(String fullName, String email, long score) {
this.FullName = fullName;
this.Email = email;
this.Score = score;
}
public String getFullName() {
return FullName;
}
public void setFullName(String fullName) {
FullName = fullName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public long getScore() {
return Score;
}
public void setScore(long score) {
Score = score;
}
用户适配器
public class UserAdapter extends FirestoreRecyclerAdapter<UserModel,
UserAdapter.UserViewHolder> {
public UserAdapter(@NonNull FirestoreRecyclerOptions<UserModel> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull UserAdapter.UserViewHolder holder, int position, @NonNull UserModel model) {
holder.username.setText(model.getFullName());
holder.email.setText(model.getEmail());
holder.score.setText(model.getScore()+"");
}
@NonNull
@Override
public UserAdapter.UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_leaderboard_single, parent, false);
return new UserViewHolder(view);
}
public class UserViewHolder extends RecyclerView.ViewHolder {
CircleImageView userImage;
TextView username;
TextView email;
TextView score;
public UserViewHolder(@NonNull View itemView) {
super(itemView);
userImage = itemView.findViewById(R.id.list_image);
username = itemView.findViewById(R.id.list_username);
email = itemView.findViewById(R.id.list_email);
score = itemView.findViewById(R.id.list_score);
}
}
公共类UserAdapter扩展FirestoreRecyclerAdapter{
公共用户适配器(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull UserAdapter.UserViewHolder holder,int位置,@NonNull UserModel model){
holder.username.setText(model.getFullName());
holder.email.setText(model.getEmail());
holder.score.setText(model.getScore()+);
}
@非空
@凌驾
public UserAdapter.UserViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.list\u leadboard\u single,parent,false);
返回新的UserViewHolder(视图);
}
公共类UserViewHolder扩展了RecyclerView.ViewHolder{
CircleImageView用户图像;
文本视图用户名;
TextView电子邮件;
文本视图分数;
public UserViewHolder(@NonNull View itemView){
超级(项目视图);
userImage=itemView.findviewbyd(R.id.list\u image);
username=itemView.findviewbyd(R.id.list\u用户名);
email=itemView.findviewbyd(R.id.list\u email);
分数=itemView.findViewById(R.id.list\U分数);
}
}
主要活动
public class Leaderboard extends Fragment{
private RecyclerView leaderboard_recycler;
private FirestoreRecyclerAdapter adapter;
private StorageReference storageReference;
FirebaseFirestore fStore;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_leaderboard, container, false);
leaderboard_recycler = view.findViewById(R.id.leaderboard_list);
setUpRecyclerView();
return view;
}
@Override
public void onStop() {
super.onStop();
if(adapter != null)
adapter.stopListening();
}
@Override
public void onStart() {
super.onStart();
if(adapter != null)
adapter.startListening();
}
private void setUpRecyclerView() {
fStore = FirebaseFirestore.getInstance();
//Query
Query query = fStore.collection("users")
.orderBy("Score", Query.Direction.DESCENDING);
//RecyclerOptions
FirestoreRecyclerOptions<UserModel> options = new FirestoreRecyclerOptions.Builder<UserModel>()
.setQuery(query, UserModel.class)
.build();
adapter = new UserAdapter(options);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
leaderboard_recycler.setLayoutManager(linearLayoutManager);
leaderboard_recycler.setAdapter(adapter);
leaderboard_recycler.invalidate();
}
}
公共类排行榜扩展片段{
私人回收商查看排行榜\ U回收商;
私人FirestoreRecyclerAdapter适配器;
私有存储参考存储参考;
FirebaseFirestore商店;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment_排行榜,容器,假);
排行榜回收器=view.findViewById(R.id.leadboard\u列表);
setUpRecyclerView();
返回视图;
}
@凌驾
公共void onStop(){
super.onStop();
if(适配器!=null)
adapter.stopListening();
}
@凌驾
public void onStart(){
super.onStart();
if(适配器!=null)
adapter.startListening();
}
私有void setUpRecyclerView(){
fStore=FirebaseFirestore.getInstance();
//质疑
Query Query=fStore.collection(“用户”)
.orderBy(“分数”、查询、方向、降序);
//回收选项
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,UserModel.class)
.build();
适配器=新用户适配器(选项);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
排行榜回收商。setLayoutManager(linearLayoutManager);
排行榜回收器。设置适配器(适配器);
排行榜_回收商。无效();
}
}
如果有人能为我指明正确的方向来处理这种情况,我将永远感激。谢谢
字符串
类型变量
Activity
或Fragment
),以便将其图片上载到Firebase存储,并且Firebase存储将返回该文件url,只需将其保存/更新到您的用户对象即可
- Firebase存储教程:
- 滑翔教程:
- 我的聊天应用演示:
片段
,专门供用户上传他们自己的个人资料图片。然后,它将存储在Firebase存储中,在他们自己的UID
下。但是我不知道如何让Firebase存储返回文件url并存储在“profilePictureUrl”中对象。我在上面给出的第一个教程视频中已经回答了你的问题,特别是在这个时候:。一旦你得到url,只需更新它或将它设置为你的firebase用户对象。我还有一个实验演示:我的错,Sam。打开的上千个选项卡正在慢慢影响我的心理。谢谢你的引导!我很感激!@Scrin哦,问题。嘿,我成功了!非常感谢你,朋友。