DaxHR
DaxHR

Reputation: 683

Setting value to item from Spinner

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

Answers (1)

Evin1_
Evin1_

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

Related Questions