【问题标题】:i want to delete data from firebase by using longclick on the listview item我想通过在listview项目上使用longclick从firebase中删除数据
【发布时间】:2019-03-10 15:48:34
【问题描述】:

在这里我添加了长按监听器,我希望在单击“是”按钮后从 Firebase 中删除我通过长按选择的那个项目,并从 arraylist 中删除,但在这里我的应用程序在单击“是”后停止工作,请帮助我从这个问题中脱颖而出

ListOfFiles.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {



            final String deleteditem=(String) ListOfFiles.getItemAtPosition(position);

            final AlertDialog.Builder builder=new AlertDialog.Builder(FetchFiles.this);
            builder.setTitle("Do You Want To Delete File ..? ");

            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                    try
                    {
                        mRef.child(ID).child(deleteditem).removeValue();

                    }
                    catch (Exception e)
                    {
                        Toast.makeText(FetchFiles.this, (CharSequence) e, Toast.LENGTH_SHORT).show();
                    }


                }
            });
            builder.show();

            arrayAdapter.remove(deleteditem);
            arrayAdapter.notifyDataSetChanged();
            return false;

        }
    });

【问题讨论】:

  • 好的。那么这里的问题是什么?你到底卡在哪里了?你的问题现在很模糊。请阅读How to Ask 并使用适当的详细信息编辑您的问题。
  • 现在我编辑它并解释具体情况请帮助我
  • Stack Overflow 是一个非常低效的交互式调试器,因此您必须自己执行此操作,然后报告发生的情况。所以在mRef.child(ID).child(deleteditem).removeValue(); 上放置一个断点并在调试器中运行应用程序。代码会被触发吗?如果是这样,IDdeleteditem 的值是您期望的吗?如果是这样,此行之后的 logcat 输出中是否有任何错误消息?如果这些都没有帮助,请尝试使用硬编码值重现问题。这可以让您知道问题出在处理 UI 的代码中,还是出在数据库代码中。

标签: android firebase listview firebase-realtime-database


【解决方案1】:

尝试添加值事件侦听器而不是 OnClick 方法,如下所示(对我有用):

ValueEventListener deleteListItem = new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            Firebase Ref.removeValue();
                            Toast.makeText(class.this, "Item deleted...", Toast.LENGTH_SHORT).show();

                            arrayList.remove(position);
                            arrayAdapter.remove(arrayAdapter.getItem(position));
                            arrayAdapter.notifyDataSetChanged();
                        }//onDataChange

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }//OnCancelled
                    };
Firebase Ref.addListenerForSingleValueEvent(deleteListItem);
dialog.dismiss();
                }//OnClick
            }).setNegativeButton("NO", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }//OnClick
            });
            alert.show();
            return true;
        }//OnItemLongClick
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2018-11-19
    相关资源
    最近更新 更多