0

So this is my first app not following a tutorial. I have got the xml all laid out, spinner drop downs working also the first calculation working which is done by EditText numbers. I am now wanting to use this first calculated answer along with one of the spinner selected values to do the next calculation Here is my xml

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

        <EditText
            android:id="@+id/inside"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="number"
            android:gravity="center" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Inside Ø \n(mm)"
            android:textSize="16dp" />
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:layout_marginTop="16dp"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

        <EditText
            android:id="@+id/outside"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="number"
            android:gravity="center" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Outside Ø \n(mm)"
            android:textSize="16dp" />
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:layout_marginTop="16dp"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

        <EditText
            android:id="@+id/coils"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="number"
            android:gravity="center"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Number of Coils"
            android:textSize="16dp" />
    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="16dp">

    <Spinner
        android:id="@+id/thickness"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:layout_weight="1"
        android:background="@android:drawable/btn_dropdown"
        android:spinnerMode="dropdown" />

    <Spinner
        android:id="@+id/width"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_weight="1"
        android:background="@android:drawable/btn_dropdown"
        android:spinnerMode="dropdown" />
</LinearLayout>

<Button
    android:id="@+id/bt_calculate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:onClick="calculate"
    android:text="Calculate" />

<RelativeLayout

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="24dp">

    <TextView
        android:id="@+id/result_m"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

<RelativeLayout

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="24dp">

    <TextView
        android:id="@+id/result_kg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

<RelativeLayout

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="24dp"
    android:layout_marginRight="24dp">

    <TextView
        android:id="@+id/result_m2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
<Button
    android:id="@+id/clear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="24dp"
    android:layout_gravity="center_horizontal"
    android:onClick="clear"
    android:text="Clear" />

And here is the code

package com.example.android.engineerstoolbox;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

import static com.example.android.engineerstoolbox.R.id.result_kg;
import static com.example.android.engineerstoolbox.R.id.result_m;
import static com.example.android.engineerstoolbox.R.id.result_m2;

public class CoilCalculator extends AppCompatActivity {
    private EditText editText1;
    private EditText editText2;
    private EditText editText3;
    private Spinner spinner1;
    private Spinner spinner2;

    private TextView resultM;
    private TextView resultKG;
    private TextView resultM2;

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

        //set spinner1 for user input of available thickness
        Spinner dropdown = (Spinner) findViewById(R.id.thickness);
        String[] items = new String[]{"Thickness", "1.2", "1.5", "2", "2.5", "3", "4"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items);
        dropdown.setAdapter(adapter);

        //set spinner2 for user input of available width
        dropdown = (Spinner) findViewById(R.id.width);
        items = new String[]{"Width", "1219", "1500", "1524"};
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items);
        dropdown.setAdapter(adapter);

        editText1 = (EditText) findViewById(R.id.inside);
        editText2 = (EditText) findViewById(R.id.outside);
        editText3 = (EditText) findViewById(R.id.coils);
        resultM = (TextView) findViewById(result_m);
        resultKG = (TextView) findViewById(result_kg);
        resultM2 = (TextView) findViewById(result_m2);

        //Set button to do calculations
        Button bt_calculate = (Button) findViewById(R.id.bt_calculate);

        bt_calculate.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                makeCalculations();
            }
        });
        //Set reset button to reset inputs
        Button mButtonReset = (Button) findViewById(R.id.clear);

        mButtonReset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                editText1.setText("");
                editText2.setText("");
                editText3.setText("");
                resultM.setText("");
            }
        });
    }

    private void makeCalculations() {
        double n1 = Double.valueOf(editText1.getText().toString());
        double n2 = Double.valueOf(editText2.getText().toString());
        double n3 = Double.valueOf(editText3.getText().toString());

        //do the Lineal meter calculation
        Double calculatedValue = ((((n1 + n2) / 2) * 3.141592654) * n3) / 1000;
        double output = (double) Math.round(calculatedValue * 1000) / 1000;
        //set the value to the textview, to display on screen.
        resultM.setText(output + " Lineal Meters");

    }

}

I know i need to set a listener of some sort to pick up the spinner value; but i am unsure where and so far i have not found a question on here that explains where to put the code.

The next calculation would look something like this

    Double calculatedValue2 = output * (value of spinner2/1000);
    //set the value to the textview, to display on screen.
    resultM2.setText(calculatedValue2 + " M²");

I am pretty sure the double is not the way to go but wanted to show something for the next calculation

2 Answers2

0

You have not actually assigned spinner1 and spinner2 to your Spinner objects.

    //set spinner1 for user input of available thickness
    spinner1 = (Spinner) findViewById(R.id.thickness);
    String[] items = new String[]{"Thickness", "1.2", "1.5", "2", "2.5", "3", "4"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items);
    spinner1.setAdapter(adapter);

    //set spinner2 for user input of available width
    spinner2 = (Spinner) findViewById(R.id.width);
    items = new String[]{"Width", "1219", "1500", "1524"};
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items);
    spinner2.setAdapter(adapter);

Then when you want to perform the calculation,

String selectedItem = spinner2.getSelectedItem().toString();
double selectedValue = Double.parseDouble(selectedItem);
Double calculatedValue2 = output * (selectedValue/1000);
//set the value to the textview, to display on screen.
resultM2.setText(calculatedValue2 + " M²");
rhari
  • 1,367
  • 1
  • 11
  • 19
  • I knew would be something simple and overlooked; I now get a display onscreen except it is just the "output" from the first equation it is not doing the *(selectedValue/1000) – Rhys Genever Nov 29 '16 at 09:44
0

If you want to call a listener when you are selecting a value from the spinner, you should use Spinner.setOnItemSelectedListener method. You can see this post for further information.

setOnItemSelectedListener of Spinner does not call

You just had to overwrite the onItemSelected method.

Community
  • 1
  • 1
Brank Victoria
  • 1,447
  • 10
  • 17