单击按钮时如何将多个复选框值保存到 Firebase

Posted

技术标签:

【中文标题】单击按钮时如何将多个复选框值保存到 Firebase【英文标题】:How to save multiple checkbox values to Firebase when a Button is clicked 【发布时间】:2019-04-26 20:19:09 【问题描述】:

这是 html 文件。我无法将多个复选框值保存到 Firebase 中。当单击按钮并转到另一个活动时,我想将选定的复选框文本存储到 Firebase。

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/container"
        android:layout_
        android:layout_
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:layout_marginTop="50dp">

            <FrameLayout
                android:layout_
                android:layout_>

                <ImageView
                    android:id="@+id/image"
                    android:layout_
                    android:layout_
                    android:background="#FCFAFA"
                    android:scaleType="centerCrop" />

                <ImageView
                    android:id="@+id/camera"
                    android:layout_
                    android:layout_
                    android:layout_gravity="right|bottom"
                    android:layout_marginBottom="24dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="8dp"
                    android:background="@drawable/button_bg_round"
                    android:padding="8dp"
                    android:tint="#858585"
                    app:srcCompat="@drawable/ic_camera"
                    tools:ignore="VectorDrawableCompat" />
            </FrameLayout>

            <LinearLayout
                android:layout_
                android:layout_
                android:orientation="vertical"
                android:paddingBottom="12dp"
                android:paddingLeft="12dp"
                android:paddingRight="12dp"
                android:paddingTop="4dp">

                <TextView
                    android:layout_
                    android:layout_
                    android:layout_marginTop="12dp"
                    android:text="Place "
                    android:textColor="#000"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginTop="4dp"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <EditText
                        android:id="@+id/placeName"
                        android:layout_
                        android:layout_
                        android:layout_weight="1"
                        android:background="@color/transparent"
                        android:drawablePadding="8dp"
                        android:gravity="center_vertical"
                        android:minHeight="40dp"
                        android:padding="8dp" />

                </LinearLayout>

                <TextView
                    android:layout_
                    android:layout_
                    android:layout_marginTop="24dp"
                    android:text="Street"
                    android:textColor="#000"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginTop="4dp"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <EditText
                        android:id="@+id/streetName"
                        android:layout_
                        android:layout_
                        android:layout_weight="1"
                        android:background="@color/transparent"
                        android:drawablePadding="8dp"
                        android:gravity="center_vertical"
                        android:minHeight="40dp"
                        android:padding="8dp" />

                </LinearLayout>

                <TextView
                    android:layout_
                    android:layout_
                    android:layout_marginTop="24dp"
                    android:text="Postcode"
                    android:textColor="#000"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginTop="4dp"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <EditText
                        android:id="@+id/postcodeName"
                        android:layout_
                        android:layout_
                        android:layout_weight="1"
                        android:background="@color/transparent"
                        android:drawablePadding="8dp"
                        android:gravity="center_vertical"
                        android:minHeight="40dp"
                        android:padding="8dp" />

                </LinearLayout>

                <TextView
                    android:layout_
                    android:layout_
                    android:layout_marginTop="24dp"
                    android:text="City"
                    android:textColor="#000"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginTop="4dp"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <EditText
                        android:id="@+id/cityName"
                        android:layout_
                        android:layout_
                        android:layout_weight="1"
                        android:background="@color/transparent"
                        android:drawablePadding="8dp"
                        android:gravity="center_vertical"
                        android:minHeight="40dp"
                        android:padding="8dp" />

                </LinearLayout>

                <TextView
                    android:layout_
                    android:layout_
                    android:layout_marginTop="24dp"
                    android:text="Facility"
                    android:textColor="#000"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="4dp"
                    android:orientation="horizontal">

                    <CheckBox
                        android:layout_
                        android:layout_
                        android:id="@+id/facility_ramp"
                        android:text="@string/ramp"/>

                    <EditText
                        android:id="@+id/desc_ramp"
                        android:layout_
                        android:layout_
                        android:hint="Description"
                        android:layout_marginLeft="80dp"/>

                </LinearLayout>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="4dp"
                    android:orientation="horizontal">

                    <CheckBox
                        android:layout_
                        android:layout_
                        android:id="@+id/facility_lift"
                        android:text="@string/disabled_lift"/>

                    <EditText
                        android:id="@+id/desc_lift"
                        android:layout_
                        android:layout_
                        android:hint="Description"
                        android:layout_marginLeft="38dp"/>

                </LinearLayout>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="4dp"
                    android:orientation="horizontal">

                    <CheckBox
                        android:layout_
                        android:layout_
                        android:id="@+id/facility_counter"
                        android:text="@string/counter"/>

                    <EditText
                        android:id="@+id/desc_counter"
                        android:layout_
                        android:layout_
                        android:hint="Description"
                        android:layout_marginLeft="35dp"/>

                </LinearLayout>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="4dp"
                    android:orientation="horizontal">

                    <CheckBox
                        android:layout_
                        android:layout_
                        android:id="@+id/facility_toilet"
                        android:text="@string/toilet"/>

                    <EditText
                        android:id="@+id/desc_toilet"
                        android:layout_
                        android:layout_
                        android:hint="Description"
                        android:layout_marginLeft="10dp"/>

                </LinearLayout>

            </LinearLayout>

            <Button
                android:id="@+id/addBtn"
                android:background="@drawable/searchbutton"
                android:layout_
                android:layout_
                android:text="CREATE PLACE"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                />

            <EditText
                android:layout_
                android:layout_
                android:layout_marginBottom="10dp"/>

        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

这是java代码。我没有将选中的框项/dat 保存到 firebase 中,因为一旦选中了框,我就不知道用于存储设施描述的 java 代码。帮帮忙,谢谢

    //declare
    mAddPlace = (EditText) findViewById(R.id.placeName);
    mAddStreet = (EditText) findViewById(R.id.streetName);
    mAddPostcode = (EditText) findViewById(R.id.postcodeName);
    mAddCity = (EditText) findViewById(R.id.cityName);
    mbtnAdd = (Button) findViewById(R.id.addBtn);

    mRampCheckBox = findViewById(R.id.facility_ramp);
    mCounterCheckBox = findViewById(R.id.facility_counter);
    mLiftCheckBox = findViewById(R.id.facility_lift);
    mToiletCheckBox = findViewById(R.id.facility_toilet);

    descRamp = findViewById(R.id.desc_ramp);
    descLift = findViewById(R.id.desc_lift);
    descCounter = findViewById(R.id.desc_counter);
    descToilet = findViewById(R.id.desc_toilet);


    mRampCheckBox.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            if (((CheckBox) v).isChecked()) 
                descRamp.setEnabled(true);

            
            else
                descRamp.setEnabled(false);

        
    );

    mLiftCheckBox.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            if (((CheckBox) v).isChecked()) 
                descLift.setEnabled(true);
            
            else
                descLift.setEnabled(false);

        
    );

    mCounterCheckBox.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            if (((CheckBox) v).isChecked()) 
                descCounter.setEnabled(true);
            
            else
                descCounter.setEnabled(false);

        
    );

    mToiletCheckBox.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            if (((CheckBox) v).isChecked()) 
                descToilet.setEnabled(true);
            
            else
                descToilet.setEnabled(false);

        
    );

【问题讨论】:

您想在一个实例中保存所有复选框值吗? 我想保存设施的检查值,并启用与该地点关联的描述。这意味着 1 个地方可以使用自己的描述检查多个设施以存储到火力基地 您在代码中的哪个位置将值设置为 Firebase? 还没有完成这部分,因为我真的不知道如何将值存储到 firebase 【参考方案1】:
    private boolean mRamp , mLift , mCounter , mToilet ;   
     private DatabaseReference UserRef;
     private FirebaseAuth mAuth;
    
    
     @Override
        protected void onCreate(Bundle savedInstanceState)
        
            mAuth = FirebaseAuth.getInstance();
            UserRef = FirebaseDatabase.getInstance().getReference().child("Users");
        
    
    
    mRampCheckBox.setOnClickListener(new View.OnClickListener() 
    
            @Override
            public void onClick(View v) 
                if (((CheckBox) v).isChecked()) 
                    descRamp.setEnabled(true);
                    mRamp = true;
    
                
                else
                    descRamp.setEnabled(false);
                    mRamp = false;
    
    
            
        );
    
        mLiftCheckBox.setOnClickListener(new View.OnClickListener() 
    
            @Override
            public void onClick(View v) 
                if (((CheckBox) v).isChecked()) 
                    descLift.setEnabled(true);
                    mLift = true;
                
                else
                    descLift.setEnabled(false);
                    mLift  = false;
    
            
        );
    
        mCounterCheckBox.setOnClickListener(new View.OnClickListener() 
    
            @Override
            public void onClick(View v) 
                if (((CheckBox) v).isChecked()) 
                    descCounter.setEnabled(true);
                    mCounter = true;
                
                else
                    descCounter.setEnabled(false);
                    mCounter = false;
    
            
        );
    
        mToiletCheckBox.setOnClickListener(new View.OnClickListener() 
    
            @Override
            public void onClick(View v) 
                if (((CheckBox) v).isChecked()) 
                    descToilet.setEnabled(true);
                    mToilet = true;
                
                else
                    descToilet.setEnabled(false);
                    mToilet = false;
    
            
        );
    


    
    
    
    private void uploadData()
    
      HashMap userMap = new HashMap();
            userMap.put("mRamp" ,mRamp);
            userMap.put("mLift" ,mLift);
            userMap.put("mCounter" ,mCounter);
            userMap.put("mToilet" ,mToilet);
            
    
            UserRef.updateChildren(userMap).addOnCompleteListener(new OnCompleteListener()
            
                @Override
                public void onComplete(@NonNull Task task)
                
                    if(task.isSuccessful())
                    
                      
                        Toast.makeText(this, "Data Saved", Toast.LENGTH_SHORT).show();
                    
                    else
                    
                       
                        Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
                    
                
            );
    

在你想上传数据的地方调用这个方法uploadData();

【讨论】:

以上是关于单击按钮时如何将多个复选框值保存到 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

将多个复选框插入数据库 Html Php

将 HTML-Select 附加到输入并在用户单击“保存”按钮后存储它们的值

如何在单击按钮时将按钮颜色保存到共享首选项?

用户单击下一个分页页面或页面刷新后如何保存复选框状态并将值发布到页面?

如何将多个用户输入保存到微调器?

如何检查多个按钮单击并将值保存在plist上? [关闭]