Android 如何让recyclerview适配器知道存储在firebase中的列表现在从另一个活动中为空?
我有一个收藏功能,在firebase中,我将用户喜爱的动物作为收藏数组存储在其用户ID下。您可以从recyclerview列表中收藏动物,或者如果您单击列表中的动物,它将转到一个详细页面,您可以在那里收藏动物。这对喜欢和不喜欢都很有效,除非你不喜欢用户的最后一只动物,导致喜爱列表为空。在firebase端,一切正常,但当您单击“上一步”返回列表时,UI仍将其显示为“收藏夹”,即使它不是 在详细活动中设置收藏夹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
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);
}
到