我们应该在 RecyclerView Adapter 中包含 firebase 侦听器吗?

时间:2021-05-24 15:46:51

标签: android firebase android-recyclerview

目前我有一个 RecyclerView 适配器类,它显示带有事件名称和主机用户图像的事件列表。我需要使用 firebase 侦听器为其个人资料图片获取正确的主机(通过使用主机的用户 ID),然后放置到每个列表项的 imageView。我试图通过调用 RecyclerView 中的 firebase 侦听器来避免获取配置文件图像,但我想不出更好的方法来获取数据。任何人都可以指导我完成这个吗?

下面是 RecyclerView 适配器类,其中 firebase 监听器放置在 onBindViewHolder 中

@Override
protected void onBindViewHolder(@NonNull partyViewholder holder, int position, @NonNull Party model){
           getUser.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if(snapshot.exists()){
                        for (DataSnapshot datas : snapshot.getChildren()) {
                            try {
                                GlideApp.with(context).load(datas.child("uri").getValue(String.class))
                                        .placeholder(R.drawable.blank_picture)
                                        .into(holder.mUserImg);
                            }catch (Exception e){
                                Log.d("adapter", "onBindViewHolder: "+ e.getMessage());
                            }
                        }
                    }else{
                        GlideApp.with(context).load(R.drawable.blank_picture)
                                .placeholder(R.drawable.blank_picture)
                                .into(holder.mUserImg);
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                    Log.w("adapter", "Failed to read value.", error.toException());
                }
            });
}

编辑: Firebase 结构:

事件数据 Event data

用户数据

User data

0 个答案:

没有答案
相关问题