12

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
    <Spinner
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/spin"
        android:entries="@array/num"
    />
    <Button
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/btn"
        android:text="Click ME"
        android:gravity="center"
    />
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/txtv"
    />
</LinearLayout>

Spin.java

package com.and.spin;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

public class spin extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TextView tv=(TextView)findViewById(R.id.txtv);

        Button b=(Button)findViewById(R.id.btn);
        final Spinner s=(Spinner)findViewById(R.id.spin);

        b.setOnClickListener(new OnClickListener() {                            
            public void onClick(View arg0) {
                String spin=s.toString();
                tv.setText(spin);
            }
        });
    }
}

In this program, i'm trying to display selected options from the Spinner to the TextView. But output dsiplays android.widget.Spinner@44c0d7f8

I want output like (1,2,3,4 or 5) as the option selected in Spinner rather than android.widget.Spinner@44c0d7f8

Jaak Kütt
  • 2,566
  • 4
  • 31
  • 39
yashhy
  • 2,856
  • 5
  • 31
  • 57

4 Answers4

10

You dont need shared preference to load values in spinner. You just need to declare array in string.xml file and load that.I am giving you my code.Just use it.:-

STEP-1:-

Declare array for spinner in your string.xml(res->values->strings.xml):--

<string-array name="country_array">
    <item>Greece</item>
    <item>United Kingdom</item>
    <item>Italy</item>
    <item>France</item>
    <item>Germany</item>
    <item>Turkey</item>
    <item>Poland</item>
    <item>India</item>
</string-array>

STEP-2:-

Declare Spinner widget in your layout xml file

<Spinner
     android:id="@+id/spinCountry"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginTop="5dp"
     android:paddingLeft="8dp"
     android:popupBackground="@android:color/white"
     android:scrollbars="none"
     android:spinnerMode="dropdown" />

STEP-3:-

Declare Spinner in your Activity

Spinner spinCountry;
spinCountry= (Spinner) findViewById(R.id.spinCountry);//fetch the spinner from layout file
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, getResources()
                    .getStringArray(R.array.country_array));//setting the country_array to spinner
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinCountry.setAdapter(adapter);
//if you want to set any action you can do in this listener
spinCountry.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int position, long id) {
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    });
Kailash Dabhi
  • 3,473
  • 1
  • 29
  • 47
7
b.setOnClickListener(new OnClickListener()
    {

        public void onClick(View arg0)
        {
            String spin=s.getSelectedItem().toString();
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            tv.setText(spin);
        }
    });
Hardik Joshi
  • 9,477
  • 12
  • 61
  • 113
1
    spinCountry.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
         public void onItemSelected(AdapterView<?> parentView,
                 View selectedItemView, int position, long id) {
             try {

                  String select_item =parentView.getItemAtPosition(position).toString();
                 } 
           catch (Exception e) {

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

        }

    });
Sakshi
  • 151
  • 7
0

You are calling toString() method on spinner to get the selection which is wrong. You need to call getSelectedItemPosition() method to get the selection.

Techie Manoj
  • 432
  • 3
  • 14