Как использовать невыбранное значение в счетчике, который имеет только два элемента в Android Studio? - PullRequest
0 голосов
/ 04 ноября 2019

Я создаю приложение для устройства IoT. Мое приложение подключено к базе данных Firebase, в которой отображаются значения ультразвукового датчика. Я дал возможность делать выводы на устройстве IoT ВЫСОКОЕ и НИЗКОЕ, когда текущее значение датчика больше значения, установленного пользователем в приложении. Я использую счетчик, который имеет только два значения «ВЫСОКИЙ» и «НИЗКИЙ». 1. Когда выбранное значение> текущее значение, я хочу, чтобы значения счетчика обновлялись в базе данных. 2. И когда Текущее значение> Выбранное значение, я хочу, чтобы невыбранные значения обновлялись в базе данных. Случай 1 работает нормально, но случай 2 не работает.

В коде аналоговое значение означает текущее значение датчика, а значение означает выбранное значение.

   // Read from the database
            myRef = FirebaseDatabase.getInstance().getReference();
            myRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    // This method is called once with the initial value and again
                    // whenever data at this location is updated.
                    if(StringValue.length()>0 && link2.length()>0) {

                        try{
                        status = dataSnapshot.child("Distance").getValue().toString();}
                        catch (NullPointerException ignored){}


                        if(status==null){
                            TextView text4 = layout.findViewById(R.id.text4);
                            text4.setText(" Error: Wrong ID. ");
                            // Toast...
                            Toast toast = new Toast(getApplicationContext());
                            toast.setGravity(Gravity.CENTER_VERTICAL, 0, 540);
                            toast.setDuration(Toast.LENGTH_LONG);
                            toast.setView(layout);
                            toast.show();
                        }
                        else{ analogvalue = Integer.parseInt(status);}
                        pin.setText(status);
                        final int value = Integer.parseInt(StringValue);



                        if (analogvalue > value) {
                            Firebase fireChild = fire2.child( "Pin1");
                            fireChild.setValue(spinner1.getSelectedItem().toString());
                            Firebase fireChild1 = fire2.child( "Pin2");
                            fireChild1.setValue(spinner2.getSelectedItem().toString());

                        }
                        if(analogvalue <= value) {
                            if(spinner1.getSelectedItem().toString().equals("HIGH")){Firebase fireChild = fire2.child("Pin1"); fireChild.setValue("LOW");}
                            else {Firebase fireChild = fire2.child("Pin1"); fireChild.setValue("HIGH");}
                            if(spinner2.getSelectedItem().toString().equals("HIGH")){Firebase fireChild = fire2.child("Pin2"); fireChild.setValue("LOW");}
                            else {Firebase fireChild = fire2.child( "Pin2"); fireChild.setValue("HIGH");}
                        }
                    }

                }

[Screenshot of the app[][1][1]

1 Ответ

1 голос
/ 04 ноября 2019
if (analogvalue > value) {
    Firebase fireChild = fire2.child(link2 + "/Pin1");
    fireChild.setValue(spinner1.getSelectedItem().toString());
    Firebase fireChild1 = fire2.child(link2 + "/Pin2");
    fireChild1.setValue(spinner2.getSelectedItem().toString());

} else if(analogvalue <= value) {
    Firebase fireChild = fire2.child(link2 + "/Pin2");
    fireChild.setValue(spinner1.getItemAtPosition(Math.abs(spinner.getSelectedItemPosition()-1)));
    Firebase fireChild1 = fire2.child(link2 + "/Pin1");
    fireChild1.setValue(Math.abs(spinner2.getItemAtPosition(Math.abs(spinner.getSelectedItemPosition()-1))));
}

Проверьте это решение, которое будет работать для вашего случая, только если в счетчиках есть два значения

...