热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Firebase使用Hashmap在同一个孩子上推送数据

如何解决《Firebase使用Hashmap在同一个孩子上推送数据》经验,请问有什么解决方案?

对于我的Android应用程序,我正在尝试将多个字符串添加到同一个孩子(Firebase唯一ID),用户将在其中输入不同的布局.我正在使用Hashmap将字符串放入Firebase.我有4-5种不同的布局,用户会遇到并需要填写信息,但是当我将其保存在数据库中时,它总是使用不同的唯一ID,我需要将它们全部放在同一个ID下.

在图像中,我需要所有信息都在第一个唯一ID下.

这是我的代码,我创建了一个Parent类,每个布局(其他类)都有一些方法来访问Hashmap.

家长班:

public class FireBaseDataMap {

    private HashMap dataMap = new HashMap();

    public HashMap fireebaseMap(){
        return dataMap;
    }

}

第一个活动:我在onClick(视图)方法中放置了需要帮助的箭头.

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //UI References
    private EditText firstName;
    private EditText lastName;
    private EditText birthPlace;
    private EditText etxtBirthdate;
    private EditText etxtMissingDate;
    private Button saveButton;
    private Button cancel_button;


    private DatePickerDialog birthdateDatePickerDialog;
    private DatePickerDialog missingDatePickerDialog;

    private DatabaseReference mDatabase;

    private SimpleDateFormat dateFormatter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);

        findViewsById();

        setDateTimeField();

        saveButton = (Button) findViewById(R.id.saveButton);
        cancel_button = (Button) findViewById(R.id.cancel_button);

        saveButton.setOnClickListener(this);
        cancel_button.setOnClickListener(this);

    }

    private void findViewsById() {

        firstName = (EditText) findViewById(R.id.firstName);
        lastName = (EditText) findViewById(R.id.lastName);
        birthPlace = (EditText) findViewById(R.id.birthPlace);


        etxtBirthdate = (EditText) findViewById(R.id.etxt_birthdate);
        etxtBirthdate.setInputType(InputType.TYPE_NULL);
        etxtBirthdate.requestFocus();


        etxtMissingDate = (EditText) findViewById(R.id.etxt_missingdate);
        etxtMissingDate.setInputType(InputType.TYPE_NULL);
        etxtMissingDate.requestFocus();


    }

    @Override
    public void onClick(View view) {
        if(view == etxtBirthdate) {
            birthdateDatePickerDialog.show();
        }

        if(view == etxtMissingDate){
            missingDatePickerDialog.show();
        }
        if(view == saveButton){

            String FirstName = firstName.getText().toString().trim();
            String LastName = lastName.getText().toString().trim();
            String BirthPlace = birthPlace.getText().toString().trim();
            String BirthDate = etxtBirthdate.getText().toString().trim();
            String MissingDate = etxtMissingDate.getText().toString().trim();

            mDatabase = FirebaseDatabase.getInstance().getReference();

            // Here is where im accessing the parent class and need help <------
            FireBaseDataMap obj = new FireBaseDataMap();
            HashMap dataMap = obj.fireebaseMap();

            if(FirstName.isEmpty()) {
                FirstName = "n/a";
                dataMap.put("firstName", FirstName);
            }
            else
                dataMap.put("firstName", FirstName);

            if(LastName.isEmpty()) {
                LastName = "n/a";
                dataMap.put("lastName", LastName);
            }

            else
                dataMap.put("lastName", LastName);

            if(BirthPlace.isEmpty()) {
                BirthPlace = "n/a";
                dataMap.put("birthPlace", BirthPlace);
            }

            else
                dataMap.put("birthPlace", BirthPlace);

            if(BirthDate.isEmpty()) {
                BirthDate = "n/a";
                dataMap.put("birthDate", BirthDate);
            }

            else
                dataMap.put("birthDate", BirthDate);

            if(MissingDate.isEmpty()) {
                MissingDate = "n/a";
                dataMap.put("missingDate", MissingDate);
            }

            else
                dataMap.put("missingDate", MissingDate);


            mDatabase.child("null").push().setValue(dataMap);

        }

        if(view == cancel_button){
            startActivity(new Intent(this, PhysicalAttributes.class));

        }
    }

}

第二个活动:我只是发布了我需要帮助的方法来进行这个活动所以它看起来不会那么长,但是如果需要全班来理解那么我可以更新它.

 public void onClick(View view) {



        if (view == saveButton) {


            String PersOnAge= personAge.getText().toString().trim();
            String PersOnHeight= personHeight.getText().toString().trim();
            String PersOnWeight= personWeight.getText().toString().trim();

            mDatabase = FirebaseDatabase.getInstance().getReference();

            FireBaseDataMap obj = new FireBaseDataMap();
            HashMap dataMap = obj.fireebaseMap();


            if(PersonAge.isEmpty()){
                PersOnAge= "n/a";
                dataMap.put("personAge", PersonAge);
            }

            else
                dataMap.put("personAge", PersonAge);

            if(PersonHeight.isEmpty()) {
                PersOnHeight= "n/a";
                dataMap.put("personHeight", PersonHeight);
            }
            else
                dataMap.put("personHeight", PersonHeight);

            if(PersonWeight.isEmpty()) {
                PersOnWeight= "n/a";
                dataMap.put("personWeight", PersonWeight);
            }
            else
                dataMap.put("personWeight", PersonWeight);

            mDatabase.child("null").push().setValue(dataMap);


        }
        if (view == cancel_button) {


        }

    }
}

我试过看了一遍,尝试了不同的方法使它工作,但没有.任何帮助,将不胜感激.如果需要澄清,那么将尽我所能.

我想到的另一种方式是,如果我可以在每个活动上访问相同的saveButton,那么它是否有效.


推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • struts2重点——ValueStack和OGNL
    一、值栈(ValueStack)1.实现类:OGNLValueStack2.对象栈:CompoundRoot( ... [详细]
author-avatar
许雅惠嘉文意芝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有