Android 如何让recyclerview适配器知道存储在firebase中的列表现在从另一个活动中为空?

Android 如何让recyclerview适配器知道存储在firebase中的列表现在从另一个活动中为空?,android,firebase-realtime-database,android-recyclerview,favorites,Android,Firebase Realtime Database,Android Recyclerview,Favorites,我有一个收藏功能,在firebase中,我将用户喜爱的动物作为收藏数组存储在其用户ID下。您可以从recyclerview列表中收藏动物,或者如果您单击列表中的动物,它将转到一个详细页面,您可以在那里收藏动物。这对喜欢和不喜欢都很有效,除非你不喜欢用户的最后一只动物,导致喜爱列表为空。在firebase端,一切正常,但当您单击“上一步”返回列表时,UI仍将其显示为“收藏夹”,即使它不是 在详细活动中设置收藏夹 if (user != null) { //first

我有一个收藏功能,在firebase中,我将用户喜爱的动物作为收藏数组存储在其用户ID下。您可以从recyclerview列表中收藏动物,或者如果您单击列表中的动物,它将转到一个详细页面,您可以在那里收藏动物。这对喜欢和不喜欢都很有效,除非你不喜欢用户的最后一只动物,导致喜爱列表为空。在firebase端,一切正常,但当您单击“上一步”返回列表时,UI仍将其显示为“收藏夹”,即使它不是

在详细活动中设置收藏夹

if (user != null) {
                //first check if favourited
                if (favouritesList != null && favouritesList.contains(animalModel.getId())) {
                    btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
                } else {
                    btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
                }
                btnFavourite.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //if favourited, unfavourite
                        if (favouritesList != null && favouritesList.contains(animalModel.getId())) {
                            btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
                            favouritesList.remove(animalModel.getId());
                            reference.setValue(favouritesList);
                        } else {
                            btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
                            if (favouritesList == null) { //if favourites list is null
                                favouritesList = new ArrayList<>();
                                favouritesList.add(animalModel.getId());
                            } else {
                                favouritesList.add(animalModel.getId());
                            }
                            reference.setValue(favouritesList);
                        }

                    }
                });
            }
if(用户!=null){
//首先检查是否喜欢
if(FavoriteSList!=null&&FavoriteSList.contains(animalModel.getId()){
btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
}否则{
btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
}
btnFavourite.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//如果有利,则不利
if(FavoriteSList!=null&&FavoriteSList.contains(animalModel.getId()){
btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
删除(animalModel.getId());
参考设置值(收藏夹列表);
}否则{
btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
如果(FavoriteSList==null){//如果Favorites列表为null
FavoriteSList=新的ArrayList();
添加(animalModel.getId());
}否则{
添加(animalModel.getId());
}
参考设置值(收藏夹列表);
}
}
});
}
在承载recyclerview onCreate的片段中调用此GetFavorites()方法:

public void getFavourites(){
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    if (user != null){
        String userUid = user.getUid();
        reference = FirebaseDatabase.getInstance().getReference(Common.USER).child(userUid).child(Common.FAVOURITE);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                GenericTypeIndicator<ArrayList<String>> t = new GenericTypeIndicator<ArrayList<String>>() {};
                favouritesList = (ArrayList<String>)dataSnapshot.getValue(t);
                if (favouritesList != null){
                    animalAdapter.setFavouritesList(favouritesList);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}
public void getFavorites(){
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
如果(用户!=null){
字符串userUid=user.getUid();
reference=FirebaseDatabase.getInstance().getReference(Common.USER).child(userUid).child(Common.favorite);
addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
GenericTypeIndicator t=新的GenericTypeIndicator(){};
FavoriteSList=(ArrayList)dataSnapshot.getValue(t);
if(收藏夹列表!=null){
animalAdapter.setFavoriteSList(FavoriteSList);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
}
相关适配器代码:

@Override
    public void onBindViewHolder(final ViewHolder holder, int position){

        final AnimalType animalModel = mAnimalList.get(position);
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        //if user logged in
        if (user != null) {
            //first check if favourited
            if (favouritesList != null && favouritesList.contains(animalModel.getId())) {
                holder.btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
            } else {
                holder.btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
            }

            String userUid = user.getUid();
            reference = FirebaseDatabase.getInstance().getReference(Common.USER).child(userUid).child(Common.FAVOURITE);
            holder.btnFavourite.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //if favourited, unfavourite
                    if (favouritesList != null && favouritesList.contains(animalModel.getId())){
                        holder.btnFavourite.setImageResource(R.drawable.ic_favorite_border_white_36dp);
                        favouritesList.remove(animalModel.getId());
                        reference.setValue(favouritesList);
                    }
                    else{
                        holder.btnFavourite.setImageResource(R.drawable.ic_favorite_white_36dp);
                        if(favouritesList == null){ //if favourites list is null
                            favouritesList = new ArrayList<>();
                            favouritesList.add(animalModel.getId());
                        }else{
                            favouritesList.add(animalModel.getId());
                        }
                        reference.setValue(favouritesList);
                    }
                }
            });

        } else {
            //if user not logged in

        }
    }

    public void setFavouritesList(List<String> favouritesList){
        this.favouritesList = favouritesList;
        notifyDataSetChanged();
    }
@覆盖
公共无效onBindViewHolder(最终ViewHolder,内部位置){
final AnimalType animalModel=mAnimalList.get(位置);
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
//如果用户登录
如果(用户!=null){
//首先检查是否喜欢
if(FavoriteSList!=null&&FavoriteSList.contains(animalModel.getId()){
holder.btnFavourite.setImageResource(R.drawable.ic\u favorite\u white\u 36dp);
}否则{
holder.btnFavourite.setImageResource(R.drawable.ic\u favorite\u border\u white\u 36dp);
}
字符串userUid=user.getUid();
reference=FirebaseDatabase.getInstance().getReference(Common.USER).child(userUid).child(Common.favorite);
holder.btnFavourite.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//如果有利,则不利
if(FavoriteSList!=null&&FavoriteSList.contains(animalModel.getId()){
holder.btnFavourite.setImageResource(R.drawable.ic\u favorite\u border\u white\u 36dp);
删除(animalModel.getId());
参考设置值(收藏夹列表);
}
否则{
holder.btnFavourite.setImageResource(R.drawable.ic\u favorite\u white\u 36dp);
如果(FavoriteSList==null){//如果Favorites列表为null
FavoriteSList=新的ArrayList();
添加(animalModel.getId());
}否则{
添加(animalModel.getId());
}
参考设置值(收藏夹列表);
}
}
});
}否则{
//如果用户未登录
}
}
公共无效集合收藏夹列表(列表收藏夹列表){
this.favoriteslist=favoriteslist;
notifyDataSetChanged();
}

我找到了。在getFavorites()方法中,它应该从

if (favouritesList != null){
                    animalAdapter.setFavouritesList(favouritesList);
                }


我找到了。在getFavorites()方法中,它应该从

if (favouritesList != null){
                    animalAdapter.setFavouritesList(favouritesList);
                }