【问题标题】:Unable to mark post's as favorites无法将帖子标记为收藏夹
【发布时间】:2019-01-24 06:28:02
【问题描述】:

大家好,我正在 Firebase 的帮助下制作一个 android 应用程序。该应用程序运行良好,但自从我尝试添加收藏按钮的功能后,我无法从代码的“添加收藏”部分中找出错误。 current_state="不是 av" 以上部分说明了用户当前的收藏状态。 以下代码用于“添加收藏”部分。

 Holder.mFavourites.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (current_state.equals("not fav")){
                        mFav.child(puid).child(kk).child("fav_status").setValue("Added as " +
                                "fav").addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {

                                Holder.mFavourites.setImageDrawable(getContext().getDrawable(R.drawable.ic_star_black));
                                current_state = "fav";
                               Toast.makeText(getContext(),"Added to favourites",Toast
                                       .LENGTH_SHORT).show();
                            }
                        });
                    }else if (current_state.equals("fav")){
                        mFav.child(puid).child(kk).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if (task.isSuccessful()){


                                    Holder.mFavourites.setImageDrawable(getContext().getDrawable(R.drawable.ic_star_border_black_24dp));
                                    current_state = "not fav";
                                    Toast.makeText(getContext(),"Removed from favourites",Toast
                                            .LENGTH_SHORT).show();
                                }

                            }
                        });
                    }

                }
            });

上面的代码有问题- 1.每当用户第一次点击代码。他被添加到收藏夹,如果他再次点击同一个按钮,那么他将从收藏夹中删除,但如果用户在点击一次后(即被添加为收藏夹之后)继续并再次点击添加到收藏夹按钮,那么无论用户是否在收藏夹数据库中,都会显示从收藏夹中删除的 toast。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    current_state 是等于“not fav”的类变量吗?因为看起来你的 if 语句只是在读取一个字符串,实际上并不知道数据库中发生了什么。如果您将所有收藏夹查询到一个数组列表中并针对该数组列表测试您的 if 语句会怎样

    【讨论】:

    • 是的,它是一个类变量,它告诉帖子的初始状态,如果它的状态是“不喜欢”,那么帖子就会被添加到收藏夹中,一旦帖子被添加到收藏夹中,就会显示当前状态更改为“最爱”。我遇到了问题,而不是为所有帖子分配和检查 current_state。我应该检查每个特定帖子的当前状态,但我不知道该怎么做。
    • 看起来问题可能是 current_state 实际上并没有保持帖子的初始状态,它只是假设它不是最​​喜欢的(这可能适用于第一个帖子)。然后,当您收藏一个帖子时,它会将“current_state”更改为“收藏”,因此当您收藏另一个帖子时,即使帖子不是,当前状态仍然是“收藏”。如果您想检查每个帖子的状态,可以尝试将“current_state”放入数据库中的每个帖子中并检查适配器中的状态。
    • 是的,我也有同样的想法@ShadowSuave,但问题是我无法实现它,您能否提供一些关于如何在代码中实现它的提示。提前致谢。
    猜你喜欢
    • 2016-03-20
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多