1

I am building an UnitConverter App in android. Creating spinners adapters binding them everything is done. Now the main part remains that is putting the logics. How do i add them? Like If from the "From" spinner Second And from "To" spinner "Minute" is selected then put this logic and show output. If "Metre" is selected and "Mile" is selected then put that logic and show output. `

package com.hasibshovon.unitconverter;

import android.app.Activity;
import android.os.Bundle;
import android.preference.SwitchPreference;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Switch;

public class MainActivity extends Activity {
    // data source
    private static String[] types = { "Angle", "Area", "Bits&Bytes", "Density",
            "Electric Current", "Energy", "Force", "Length", "Mass", "Power",
            "Pressure", "Speed", "Temperature", "Time", "Volume" };

    private static String[] AngleUnits = { "Degree", "Radian", "Grad", "Gon",
            "Minute", "Second", "SIgn", "Mil", "Revolution", "Circle", "Turn",
            "Quadrant", "Right", "Triangle", "Sextant" };

    private static String[] AreaUnits = { "SquareMeter", "SquareKilometer",
            "SquareHectometer", "SquareDekameter", "SquareDecimeter",
            "SquareCentimeter", "SquareMilimeter", "SquareMicrometer",
            "SquareNanometer", "Hectare", "SquareMile", "SquareYard",
            "SquareFoot", "SquareInch", "Acre" };

    private static String[] BitsBytesUnits = { "bit", "byte", "kilobit",
            "kilobyte", "megabit", "megabyte", "gigabit", "gigabyte",
            "terabit", "terabyte", "petabit", "petabyte", "exabit", "exabyte" };

    private static String[] DensityUnits = { "kilogram/cubicmeter",
            "kilogram/cubiccentimeter", "gram/cubicmeter",
            "gram/cubiccentimeter", "gram/cubicmilimeter",
            "miligram/cubicmeter", "miligram/cubiccentimeter",
            "miligram/cubicmilimeter", "exagram/liter", "petagram/liter",
            "teragram/liter", "gigagram/liter", "meggram/liter",
            "kilogram/liter", "hectogram/liter", "decagram/liter",
            "gram/liter", "decigram/liter", "centigram/liter",
            "miligram/liter", "microgram/liter", "nanogram/liter",
            "picogram/liter" };

    private static String[] CurrentUnits = { "ampere", "kiloampere",
            "miliampere", "biot", "abaampere", "stataampere" };

    private static String[] EnergyUnits = { "joule", "gigajoule", "megajoule",
            "kilojoule", "milijoule", "microjoule", "nanojoule", "attojoule" };

    private static String[] ForceUnits = { "newton", "dyne", "joul/meter",
            "joul/centimeter", "gram-force", "kilogram-force", "kip-force",
            "pond", "kilo-pond" };

    private static String[] LengthUnits = { "meter", "exameter", "terameter",
            "petameter", "gigameter", "megameter", "kilometer", "hectometer",
            "dekameter", "decimeter", "centimeter", "milimeter", "micrometer",
            "nanometer", "picometer", "femtometer", "attometer" };

    private static String[] MassUnits = { "gram", "kilogram", "miligram",
            "dalton", "pound", "ounce", "ton", "quarter", "grain" };

    private static String[] PowerUnits = { "watt", "megawatt", "horsepower",
            "kilocalorie", "joul/hour", "kilojoul/hour", "joul/second" };

    private static String[] PressureUnits = { "pascal", "newton/squaremeter",
            "bar", "kilogram-force/squaremeter", "ton-force/squarefoot",
            "poundal/squarefoot", "atmosphere(atm)" };

    private static String[] SpeedUnits = { "meter/second", "kilometer/hour",
            "foot/hour", "yard/hour", "mile/hour", "mile/second", "knot" };

    private static String[] TemperatureUnits = { "kelvin", "celsius",
            "farenheit", "rankine", "reaumur" };

    private static String[] TimeUnits = { "second", "milisecond",
            "microsecond", "nanosecond", "minute", "hour", "day", "week",
            "month", "year", "decade", "century", "millenium" };

    private static String[] VolumeUnits = { "cubicmeter", "cubickilometer",
            "cubiccentimeter", "liter", "cc", "barrel", "cup", "cubicmile",
            "cubicfoot", "cubicyard", "cubicinch", "acre-foot" };

    private Spinner spnUnitTypes;
    private Spinner spnFromUnit;
    private Spinner spnToUnit;
    private EditText etFrom;
    private EditText etTo;

    // adapters
    ArrayAdapter<String> adaptUnittype;
    ArrayAdapter<String> adaptFrom;
    ArrayAdapter<String> adaptTo;

    // private OnItemSelectedListener UnitLisetener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // spnUnitTypes.setOnItemSelectedListener(UnitLisetener);
        etFrom = (EditText) findViewById(R.id.etConvertFrom);
        etTo = (EditText) findViewById(R.id.etToResult);
        // initialize view
        spnUnitTypes = (Spinner) findViewById(R.id.spnUnitType);
        spnFromUnit = (Spinner) findViewById(R.id.spnFromUnit);
        spnToUnit = (Spinner) findViewById(R.id.spnToUnit);

        // initialize adapter
        adaptUnittype = new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_spinner_item, types);

        // bind adapter and view
        spnUnitTypes.setAdapter(adaptUnittype);
        spnUnitTypes.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int postion, long arg3) {
                if (types[postion].equals("Time")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, TimeUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, TimeUnits);

                } else if (types[postion].equals("Mass")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, MassUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, MassUnits);

                } else if (types[postion].equals("Angle")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, AngleUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, AngleUnits);

                } else if (types[postion].equals("Area")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, AreaUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, AreaUnits);

                } else if (types[postion].equals("Density")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, DensityUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, DensityUnits);

                } else if (types[postion].equals("Bits&Bytes")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item,
                            BitsBytesUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item,
                            BitsBytesUnits);

                } else if (types[postion].equals("Electric Current")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, CurrentUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, CurrentUnits);

                } else if (types[postion].equals("Energy")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, EnergyUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, EnergyUnits);

                } else if (types[postion].equals("Force")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, ForceUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, ForceUnits);

                } else if (types[postion].equals("Length")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, LengthUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, LengthUnits);

                } else if (types[postion].equals("Power")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, PowerUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, PowerUnits);

                } else if (types[postion].equals("Pressure")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, PressureUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, PressureUnits);

                } else if (types[postion].equals("Speed")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, SpeedUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item, SpeedUnits);

                } else if (types[postion].equals("Temperature")) {

                    adaptFrom = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item,
                            TemperatureUnits);
                    adaptTo = new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_spinner_item,
                            TemperatureUnits);
                }
                spnFromUnit.setAdapter(adaptFrom);
                spnToUnit.setAdapter(adaptTo);

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
Alex K.
  • 171,639
  • 30
  • 264
  • 288
Hasib Hasan
  • 93
  • 1
  • 2
  • 10
  • which item u want to convert from where ...? – Amitsharma Feb 17 '14 at 15:28
  • Suppose the user selects "Gram" in the first Spinner then "Kilogram" in the second spinner it will apply the logic result= input/1000; If the user selcts "Centtimeter" and "Meter" it will apply the logic result= input/100. how do i bind the logics in selections?? – Hasib Hasan Feb 17 '14 at 15:32
  • add a button and prepare if statements pass the value of spinner onitem sellectedlistener to button then u can do this – Amitsharma Feb 17 '14 at 15:35
  • input is the EditText layout. That is "etFrom" which i initialized by etFrom = (EditText) findViewById(R.id.etConvertFrom); – Hasib Hasan Feb 17 '14 at 15:36
  • there are two input are going on both u have need to insert value of kilogram=input and then pass that value in to result=input/100; – Amitsharma Feb 17 '14 at 15:42
  • a bit unclear to me. can u give an example. How to pass the information of OnItemSelectedListeners to the button? – Hasib Hasan Feb 17 '14 at 16:17

0 Answers0