Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MainActivity.java
- package com.example.testapp.app;
- import android.support.v7.app.ActionBarActivity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.Spinner;
- import android.widget.ArrayAdapter;
- import android.widget.TextView;
- import android.widget.EditText;
- import android.text.TextWatcher;
- import android.text.Editable;
- public class MainActivity extends ActionBarActivity {
- private TextView textResult;
- private EditText inputValue;
- private Spinner spinnerCategories, spinnerValue1, spinnerValue2;
- private Unit[] spinnerTemperatureUnits = {new Unit("Celsius", 0), new Unit("Kelvin", 0), new Unit("Fahrenheit", 0)};
- private Unit[] spinnerLengthUnits = {new Unit("Centimetres", 1), new Unit("Millimetres", 0.1f), new Unit("Metres", 100), new Unit("Kilometres", 100000), new Unit("Miles", 160934), new Unit("Feet", 30.48f), new Unit("Inches", 2.54f)};
- private Unit[] spinnerVolumeUnits = {new Unit("Litres", 1), new Unit("Cubic Meters", 0), new Unit("Cubic Kilometres", 0), new Unit("Gallons", 3.78541f)};
- private Unit[] spinnerWeightUnits = {new Unit("Kilos", 1), new Unit("Grams", 0.001f), new Unit("Tonnes", 1000), new Unit("Pounds", 0.453592f)};
- private int catNumber, fromNumber, toNumber;
- private void fillList(Spinner spinner, Unit[] list) {
- String[] names = new String[list.length];
- for (int i = 0; i < list.length; i++) names[i] = list[i].getName();
- spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, names));
- }
- private void updateCategory() {
- catNumber = spinnerCategories.getSelectedItemPosition();
- switch (catNumber) {
- case 0: // Temperature
- fillList(spinnerValue1, spinnerTemperatureUnits);
- fillList(spinnerValue2, spinnerTemperatureUnits);
- spinnerValue1.setSelection(0); // Celsius
- spinnerValue2.setSelection(2); // Fahrenheit
- break;
- case 1: // Length
- fillList(spinnerValue1, spinnerLengthUnits);
- fillList(spinnerValue2, spinnerLengthUnits);
- spinnerValue1.setSelection(2); // Metres
- spinnerValue2.setSelection(5); // Feet
- break;
- case 2: // Volume
- fillList(spinnerValue1, spinnerVolumeUnits);
- fillList(spinnerValue2, spinnerVolumeUnits);
- spinnerValue1.setSelection(0); // Litres
- spinnerValue2.setSelection(3); // Gallons
- break;
- case 3: // Weight
- fillList(spinnerValue1, spinnerWeightUnits);
- fillList(spinnerValue2, spinnerWeightUnits);
- spinnerValue1.setSelection(0); // Kilos
- spinnerValue2.setSelection(3); // Pounds
- break;
- }
- updateValues();
- }
- private void updateValues() {
- float result;
- fromNumber = spinnerValue1.getSelectedItemPosition();
- toNumber = spinnerValue2.getSelectedItemPosition();
- if (catNumber == 0) { // Temperature conversion
- } else {
- }
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- inputValue = (EditText) findViewById(R.id.inputValue);
- textResult = (TextView) findViewById(R.id.textResult);
- spinnerCategories = (Spinner) findViewById(R.id.spinnerCategories);
- spinnerValue1 = (Spinner) findViewById(R.id.spinnerValue1);
- spinnerValue2 = (Spinner) findViewById(R.id.spinnerValue2);
- TextWatcher textWatcher = new TextWatcher() {
- @Override
- public void afterTextChanged(Editable editable) {updateValues();}
- };
- inputValue.addTextChangedListener(textWatcher);
- spinnerCategories.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateCategory();}
- @Override
- public void onNothingSelected(AdapterView<?> arg0) {}
- });
- spinnerValue1.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateValues();}
- @Override
- public void onNothingSelected(AdapterView<?> arg0) {}
- });
- spinnerValue2.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateValues();}
- @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;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
- Unit.java
- package com.example.testapp.app;
- public class Unit {
- Unit(String name, float ratio) {
- Name = name;
- Ratio = ratio;
- }
- public String getName() {return Name;}
- public float getRatio() {return Ratio;}
- private String Name;
- private float Ratio;
- }
- activity_main.xml
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
- tools:context="com.example.testapp.app.MainActivity"
- android:background="#ffc833">
- <Spinner
- android:id="@+id/spinnerCategories"
- android:entries="@array/spinnerCategoriesList"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true" />
- <Spinner
- android:id="@+id/spinnerValue1"
- android:layout_marginLeft="150dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/spinnerCategories"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"/>
- <Spinner
- android:id="@+id/spinnerValue2"
- android:layout_marginLeft="150dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/spinnerValue1"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"/>
- <EditText
- android:id="@+id/inputValue"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:inputType="numberDecimal"
- android:ems="10"
- android:layout_alignTop="@+id/spinnerValue1"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true" />
- <TextView
- android:id="@+id/textResult"
- android:text="Large Text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:layout_below="@+id/spinnerValue2"
- android:layout_alignRight="@+id/inputValue"
- android:layout_alignEnd="@+id/inputValue"
- android:layout_marginRight="26dp"
- android:layout_marginTop="77dp" />
- </RelativeLayout>
- strings.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">testapp</string>
- <string name="action_settings">Settings</string>
- <string-array name="spinnerCategoriesList">
- <item>Temperature</item>
- <item>Length</item>
- <item>Volume</item>
- <item>Weight</item>
- </string-array>
- </resources>
Advertisement
Add Comment
Please, Sign In to add comment