【问题标题】:Unable to delete both item and value Firebase RecyclerView无法同时删除项目和值 Firebase RecyclerView
【发布时间】:2016-10-28 16:43:03
【问题描述】:

我正在使用 Firebaseui 的 recyclerview 来显示购物车中的值,这是一个 RecyclerView。我在 recyclerview 的每一行都有删除按钮,当我单击删除按钮时,它应该从 Firebase 的数据库中删除值,并且 recyclerview 中的行也应该被删除。但问题是,当我单击 recyclerview 上的任意位置时,项目和数据库值都会被删除。
这是我正在使用的 onClick 代码:

  recyclerViewCart.addOnItemTouchListener(
            new RecyclerItemClickListener(Cart.this, recyclerViewCart, new RecyclerItemClickListener.OnItemClickListener() {
                @Override
                public void onItemClick(View childView, int position) {
                    Log.v(TAG, "YouClickon" + position);

                    key = mRecyclerViewAdapter.getRef(position).getKey();


                    listRef.child(key).removeValue();


                }
            }) {

            }
    );    

我只想在用户单击删除按钮时执行此操作。我该怎么做。请帮忙。

【问题讨论】:

    标签: firebase-realtime-database firebaseui


    【解决方案1】:

    您的点击处理程序连接到整个项目,因此它确实会在单击该项目时运行。

    如果您只想在用户单击按钮时删除该项目,则应将单击处理程序连接到该按钮。您可以在 populateViewHolder() 方法中执行此操作:

    public void populateViewHolder(ChatHolder chatMessageViewHolder, Chat chatMessage, int position) {
        chatMessageViewHolder.getDeleteButton().setOnClickListener(...).
    }
    

    【讨论】:

    • 照你说的做了。但它在 getDeleteButton().setOnClickListener(...); 上返回空指针异常;
    • 很可能,您没有返回按钮。您必须自己在调试器中运行代码才能看到。对于该级别的调试,Stack Overflow 并不是一个非常有效的工具。
    【解决方案2】:

    一定是:

    recyclerViewCart.getRef(position).removeValue();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多