Reputation: 683
So i created a Spinner and set 5 values in it. I'm building a calculator and want to every item from Spinner have some value (they have text value, but I want them to have number value). Before that, user has to enter his TDEE, don't bother with that, it's just a number, and that number then multiplys with value of selected spinner item. That all happends when the button is clicked, and then the value prints down in text view.
The problem is, I don't have idea how to pass values to spinner items.
Here's the code:
Strings:
<string-array name="razina_aktivnosti">
<item>Sjedeći (Malo ili bez aktivnosti, pretežno sjedeći posao)</item>
<item>Laka aktivnosti (Lake vježbe/sport 1-3 dana tjedno)</item>
<item>Umjeren (Umjerene vježbe/sport 3-5 dana tjedno)</item>
<item>Teške aktivnosti (Teže vježbe/sport 6-7 dana tjedno)</item>
<item>Ekstremne aktivnosti (Teške dnevne vježbe/sport i fizički posao 2 x dnevno)</item>
</string-array>
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="hr.app.liftme.liftmehr.KalkulatoriTDEE"
tools:showIn="@layout/activity_kalkulatori_tdee">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout22"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Unesite svoj BMR:"
android:id="@+id/textView115" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editBMRInput" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout22"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/linearLayout23"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Odaberite razinu aktivnosti"
android:id="@+id/aktivnost"
android:layout_below="@+id/linearLayout22"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Spinner
android:id="@+id/spinnerTDEE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/aktivnost"
android:layout_alignParentLeft="true">
</Spinner>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/linearLayout23">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Izračunaj"
android:id="@+id/btnIzracunajTDEE"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="10dp"
android:background="#424242"
android:textColor="#ffffff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Vaš TDEE je:"
android:id="@+id/textView116"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textViewRezultatTDEE"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
Java:
package hr.app.liftme.liftmehr;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class KalkulatoriTDEE extends AppCompatActivity {
Spinner spinner;
ArrayAdapter<CharSequence> adapter;
Button btnIzracunaj;
EditText editBMRInput;
TextView textViewRezultat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulatori_tdee);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Intent intent = getIntent();
spinner = (Spinner) findViewById(R.id.spinnerTDEE);
adapter = ArrayAdapter.createFromResource(this, R.array.razina_aktivnosti, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
btnIzracunaj = (Button) findViewById(R.id.btnIzracunajTDEE);
editBMRInput = (EditText) findViewById(R.id.editBMRInput);
textViewRezultat = (TextView) findViewById(R.id.textViewRezultatTDEE);
btnIzracunaj.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
double prvoPolje = Double.parseDouble(editBMRInput.getText().toString());
// HERE'S WHERE I'VE STUCKED!!!
double rezultat = 0;
btnIzracunaj.setText(Double.toString(rezultat));
}
});
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getBaseContext(), parent.getItemIdAtPosition(position)+" selected", Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
Any ideas?
Upvotes: 0
Views: 201
Reputation: 12866
Use the getSelectedItem()
from the Spinner:
spinner.getSelectedItem().toString()
So, in your code replace your btnIzracunaj
listener with:
btnIzracunaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
}
});
You are going to have to parse what you have on your strings.xml. I would recommend you to set them as numbers just to test:
<string-array name="razina_aktivnosti">
<item>1.1</item>
<item>2.2</item>
<item>3.3</item>
<item>4.4</item>
<item>5.5</item>
</string-array>
Edit:
With your strings.xml set with only floating numbers, your new onClickListener would look like:
btnIzracunaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double prvoPolje = Double.parseDouble(editBMRInput.getText().toString());
double rezultat = 0;
Toast.makeText(MainActivity.this, spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
rezultat = Double.valueOf(spinner.getSelectedItem().toString());
btnIzracunaj.setText(String.valueOf(rezultat * prvoPolje));
}
});
Upvotes: 1