首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当我点击"delete“按钮时,如何删除数据库中的一项?

我刚接触android studio,我的android应用程序使用的是Firebase。当我点击我的按钮delete(btnDelete)时,我想从我的数据库中删除一个项目。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    Query query= FirebaseDatabase.getInstance()
            .getReference().child("users").child(uid).child("foto");



        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            foto_root=itemView.findViewById(R.id.foto_root);
            tvNameF=itemView.findViewById(R.id.tvNameF);
            tvPhoneF=itemView.findViewById(R.id.tvPhoneF);
            tvAdressF=itemView.findViewById(R.id.tvAdressF);
            tvMailF=itemView.findViewById(R.id.tvMailF);
            tvNoteF=itemView.findViewById(R.id.tvNoteF);
            btnDelete=itemView.findViewById(R.id.btnDelete);
        }

        public void setTvNameF(String tvNameFs){
            tvNameF.setText(tvNameFs);
        }
        public void setTvPhoneF(String tvPhoneFs){
            tvPhoneF.setText(tvPhoneFs);
        }

    }

    /*
    get on dataBase
     */
    private void fetch() {
        FirebaseRecyclerOptions<Foto> options=
                new FirebaseRecyclerOptions.Builder<Foto>().setQuery(query, snapshot -> new Foto(
                snapshot.child("id").getKey(),
                snapshot.child("name").getValue().toString(),
                snapshot.child("phone").getValue().toString(),
                snapshot.child("adress").getValue().toString(),
                snapshot.child("email").getValue().toString(),
                snapshot.child("note").getValue().toString())).build();
        adapter = new FirebaseRecyclerAdapter<Foto, FotoActivity.ViewHolder>(options) {

            @NonNull
            @Override
            public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.foto_item,parent,false);
                return new ViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull ViewHolder viewHolder, int i, @NonNull Foto foto) {
                viewHolder.setTvNameF(foto.getNameF());
                viewHolder.setTvPhoneF(foto.getPhoneF());
                viewHolder.setTvAdressF(foto.getAdressF());
                viewHolder.setTvMailF(foto.getEmailF());
                viewHolder.setTvNoteF(foto.getNoteF());
                viewHolder.btnDelete.setOnClickListener(v -> {
                    delete();
                });
            }

        };
        rvFoto.setAdapter(adapter);
        }

    private void delete() {


        Toast.makeText(FotoActivity.this, "remove", Toast.LENGTH_SHORT).show();
    }

    private void viewRecyclerViewFoto() {
        linearLayoutManager=new LinearLayoutManager(this);
        rvFoto.setLayoutManager(linearLayoutManager);
        rvFoto.setHasFixedSize(true);
    }
}    


// adapter class

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

private void setInfoFoto() {
        DatabaseReference databaseReference=
                FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("foto").push();
        Map<String,Object> mapFoto=new HashMap<>();
        mapFoto.put("id",databaseReference.getKey());
        mapFoto.put("name",etNameF.getText().toString());
        mapFoto.put("phone",etPhoneF.getText().toString());
        mapFoto.put("adress",etAdressF.getText().toString());
        mapFoto.put("email",etMailF.getText().toString());
        mapFoto.put("note",etNoteF.getText().toString());

        databaseReference.setValue(mapFoto);

    }

我想从foto中删除一个项目,而不是所有数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 00:35:43

只需在删除函数中使用以下内容,这将删除"phone“节点的值。您需要知道要删除的用户的uid,否则您可以将其替换为数据库节点引用,但这将从所有用户ids中删除电话。基本上,您将监听foto节点,获取所有推送ids,并循环推送ids以删除所需的节点。

声明变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private static final String TAG = "TestActivity";
private DatabaseReference fbDbRef;

OnCreate

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final String uid = "youruid";
fbDbRef = FirebaseDatabase.getInstance().getReference().child("users")
         .child(uid).child("foto");

您的函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void delete() {

fbDbRef.addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

                final String pushKey = snapshot.getKey();
                Log.d(TAG, "pushKey: " + pushKey);
                fbDbRef.child(pushKey).child("phone").removeValue();

            }

        }

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

        }
    });

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55601623

复制
相关文章
jquery点击删除按钮,删除当前的div
现在有多行div,共用一个删除事件,点击删除的时候,会把页面所有的div全都删掉了,但是我只需要点击哪一行div里面的删除按钮,就删除哪一行,其实很简单,只需要写一个this事件即可。
王小婷
2019/07/08
5.2K0
python中scrapy点击按钮
本文介绍了如何用scrapy和selenium实现微博的搜索和页面跳转。首先介绍了使用FormRequest.from_request()函数进行搜索,发现没有效果后,改用selenium实现点击功能。然而,由于账号限制,不能使用cookies登录,因此探索了其他方法实现微博的搜索和页面跳转。最后发现,可以通过规则的方法实现微博的搜索和页面的跳转。
用户1148830
2018/01/03
4.5K0
SAP MM MIGO界面中的Delete按钮
选好了几个需要收货的行项目, 点击'DELETE'按钮(该按钮名字全称是'删除未确定的行’/ ’Delete Lines W/o OK’),
SAP虾客
2023/09/26
2690
WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法
在 WPF 中按钮 Button 将会吃掉路由事件,此时的 EventTrigger 如果通过 RoutedEvent 是 MouseLeftButtonDown 那么将会拿不到路由事件,也就触发不了,因此样式将不会变更。简单的解决方法就是通过 VisualStateManager 配合 VisualState 来实现
林德熙
2020/08/31
4.3K0
Python点击网站按钮
今天需要做个能控制网站按钮的功能,原因是有些网站不是分页的,而是需要点击”show more” 或者“”点击加载更多“ 按钮。才能看到更多的内容,网址和首页网址一样。
py3study
2020/01/13
2.8K0
jQuery实现动态添加和删除(点击按钮添加在页面添加和删除元素)
1:点击添加按钮弹出弹框,form表单可以填写相关的信息 2:点击保存按钮,相关信息会显示在界面的列表里
王小婷
2019/02/26
7.4K0
angular中,防止按钮的两次点击 原
       在我的项目中,用户点击按钮后,如果网页响应慢一点,用户常会再次点击一下。结果就触发了两次 click 操作。 如果是查询还好,但如果是post,put请求时,可能就是大问题了。
申君健
2019/03/12
4.3K0
angular中,防止按钮的两次点击
                                                                            原
Mysql数据库delete删除数据后的恢复过程
本次恢复的数据库安装在客户本地服务器上,服务器操作系统为windows2008 r2 。在当前环境内安装有mysql5.6单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。未进行数据库备份,未开启binlog。
北亚数据恢复中心
2020/03/02
5.8K0
Mysql数据库delete删除数据后的恢复过程
SPA PP COGI中禁用删除按钮?
本文章仅用于SAP软件的应用、学习沟通,文中所示的截图来源于SAP软件,相应著作权归SAP公司所有。
SPA_小阿龙
2021/02/24
1.7K0
js如何删除数组中指定一项
由于js中数组方法的多样性,我们可以使用很多很多方式来删除指定一项。 这里,俺给大家演示最普遍的一种方法。 思路如下: 获取到要删除项的位置 通过位置删除该项 实现方法 使用indexOf获取要要删除的元素位置,然后再使用splice方法删除。 splice方法通过删除现有元素和/或添加新元素来更改数组的内容。 实现代码 const array = [2, 5, 9]; console.log(array); const index = array.indexOf(5); //如果查询对象的话,可以使用
IT工作者
2022/01/24
2.1K0
对抗蠕虫 —— 如何让按钮不被 JS 自动点击
作者: EtherDream www.cnblogs.com/index-html/p/anti_xss_worm.html 前言 XSS 自动点按钮有什么危害? 在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言。假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 —— XSS 自动填入留言内容,并模拟点击发表按钮,于是就能发布带有恶意代码的留言。好友看了中招后,又传播给他们的好友。。。从而形成蠕虫扩散。 那么有没有一种机制,让「发表留言」必须通过用户的「真实点击」按钮才能完成,而无
前端教程
2018/03/05
9.2K0
对抗蠕虫 —— 如何让按钮不被 JS 自动点击
sqlserver delete 关联条件删除
-- 创建t1表,并插入3条数据 CREATE TABLE [dbo].[t1] ([id] [INT] NOT NULL, [name] [NCHAR](10) NULL) ON [PRIMARY]; GO INSERT INTO dbo.t1(id, name) VALUES(1, -- id - int N'lisi' -- name - nchar(10) ); INSERT INTO dbo.t1(id, name) VALUES(2, -- id - int N'zhangsan' -
跟着阿笨一起玩NET
2021/09/08
1.7K0
使用 Delete By Query API 的方式删除ES索引中的数据
ES作为现今最流行的搜索存储库,我们需要定期去清理ES集群的数据以保证集群处在一个最佳负载状态,那么如何去删除这些数据呢,我们今天来介绍一种比较常见的通过Delete By Query的方式去删除索引中的数据。
南非骆驼说大数据
2020/11/01
40K0
iOS 点击按钮复制文本
UIPasteboard *pab = [UIPasteboard generalPasteboard]; NSString *string = @"测试"; pab.string = string; if (pab == nil) { [MBProgressHUD showError:@"复制失败"]; }else {
Lee坚武
2020/10/10
4.1K0
iOS 点击按钮复制文本
当我们在谈免费游戏时
技术改变思想 本来不想用“当我们在谈XXX的时候,我们在谈什么”这种俗气的标题,但这个文章的内容,确实在一些人的想法里,还是有那么一点俗气的。所以用这个标题,也算文题对应吧。免费游戏,道具收费(Free To Play)作为一种游戏类型的存在,似乎是一个最近10年才开始的事情,但在中国,这种类型几乎成为了唯一的游戏类型。一切产品,都是因为有用户的市场需求才会存在,但是免费游戏这个市场,又是如何被挖掘出来的呢?——这对于看清楚免费游戏背后的用户需求,应该是有很多好处的。 2006年的某天,我的老板给我打了个
韩伟
2018/03/05
2.3K1
当我们在谈免费游戏时
rsync同步时,删除目标目录比源目录多余文件的方法(--delete)
在日常运维工作中,我们经常用到rsync这个同步神器。有时在同步两个目录时,会要求删除目标目录中比源目录多出的文件,这种情况下,就可用到rsync的--delete参数来实现这个需求了。 实例说明: 在服务器A上同步/tmp/work目录到远程服务器B的/tmp/work目录下(A和B已经提前做好ssh无密码信任跳转关系了),同时删除B服务器/tmp/work目录下相比于A服务器/tmp/work中多余的文件 最近在处理策划资源文件的时候需要将目录A的文件全部同步到目录B的文件,并且把目录B内多余的文件全部
洗尽了浮华
2018/01/22
6.1K0
33_删除资源 DELETE
http://mpvideo.qpic.cn/0bf2e4asuaabweaplnolqrpvcj6dfitqckqa.f10002.mp4?dis_k=abfe693a888f8bbf34322ee
宿春磊Charles
2022/03/29
6810
主外键关联删除(on delete set null和on delete cascade)
主外键关联,当删除的是父表数据,参照这些要删除的数据,Oracle有三种处理方式:
bisal
2019/01/29
2.9K0
对于防止按钮重复点击的尝试
我经常在项目中会遇到按钮重复点击后引起表单的重复点击问题。所以针对这个问题,自己尝试了几种办法分别去解决。直接上代码。
gary12138
2022/10/05
1.7K0
点击加载更多

相似问题

当我点击listview中行的delete按钮时,必须在android中删除和更新listview

32

当我点击firefox时,如何删除图像按钮上的虚线?

21

当我点击按钮时,如何获得按钮的索引?

24

当我点击按钮时如何关闭菜单?

23

当我点击resume按钮时如何恢复?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文