Skip to content

Instantly share code, notes, and snippets.

@Binary-Finery
Last active May 13, 2018 20:20
Show Gist options
  • Save Binary-Finery/fed425a2d680361cce80455cad56e041 to your computer and use it in GitHub Desktop.
Save Binary-Finery/fed425a2d680361cce80455cad56e041 to your computer and use it in GitHub Desktop.
minimal length converter
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import java.util.Locale;
public class Main extends AppCompatActivity implements AdapterView.OnItemSelectedListener, TextWatcher {
private EditText etTop, etBottom;
private Spinner spin1, spin2;
private final String UNITS[] = {"millimeters", "centimeters", "inches", "feet", "yards", "meters"};
private final double[] VALUES = {1, 10, 25.4, 304.8, 914.3996342410972602, 1000};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initAdapters();
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {doConversion();}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {}
private void doConversion() {
if (!etTop.getText().toString().isEmpty()) etBottom.setText(String.format(Locale.getDefault(), "%.2f", (VALUES[spin1.getSelectedItemPosition()] * Double.parseDouble("0" + etTop.getText().toString())) / (VALUES[spin2.getSelectedItemPosition()])));
else etBottom.setText("");
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {doConversion();}
@Override
public void afterTextChanged(Editable editable) {}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
private void initViews(){
spin1 = findViewById(R.id.top_spinner);
spin2 = findViewById(R.id.bottom_spinner);
etTop = findViewById(R.id.et_top);
etBottom = findViewById(R.id.et_bottom);
etTop.addTextChangedListener(this);
}
private void initAdapters() {
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_layout, UNITS);
adapter.setDropDownViewResource(R.layout.spinner_drop);
ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this, R.layout.spinner_layout, UNITS);
adapter2.setDropDownViewResource(R.layout.spinner_drop);
spin1.setAdapter(adapter);
spin2.setAdapter(adapter);
spin1.setOnItemSelectedListener(this);
spin2.setOnItemSelectedListener(this);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment