Airfix
Airfix

Reputation: 127

Invoking a Spinner onitemselect listener

I'm really close to getting my spinner to do something when an item is selected. I just can't figure out how to set up the onitemselectedlistener correctly. I think my problem is not knowing how to pass the arguments to my onItemSelected method. Help to get the final part of this working is very much appreciated.

Here is the code:

public class MainActivity extends AppCompatActivity {



    Spinner spinner;
    String[][] testScoreList = new String[3][3];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //Load test scores into arraylist
        nameArrayListMethod();
        spinner.setOnItemSelectedListener(onItemSelected());


    }

    //This method loads test scores into an array and populates spinner
    public void nameArrayListMethod (){

        InputStreamReader InputSR = null;
        BufferedReader BufferedRdr = null;
        String thisLine = null;

        AssetManager am = getAssets();
        String[] SpinnerNames = new String[3];

        try {
            InputSR = new InputStreamReader(am.open("scoresdata/test_scores.txt"));
            BufferedRdr = new BufferedReader(InputSR);

            // open input stream test_scores for reading purpose.

            int i = 0;
            while ((thisLine = BufferedRdr.readLine()) != null) {
                 //System.out.println(thisLine);

                String[] parts = thisLine.split(" ");
                testScoreList[i][0] = parts[0];
                testScoreList[i][1] = parts[1];
                testScoreList[i][2] = parts[2];

                SpinnerNames[i] = testScoreList[i][0]; //Extract first column for spinner
                i = i +1;
            }
            BufferedRdr.close();
            InputSR.close();

        } catch (Exception e) {
            e.printStackTrace();

        }

        spinner= (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, SpinnerNames);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerArrayAdapter);

    }

    public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        Toast.makeText(parent.getContext(),
                "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();
    }

}

Upvotes: 0

Views: 323

Answers (3)

Arpit Patel
Arpit Patel

Reputation: 8047

You can add data Tow ways

Method 1

if you have a simple one line data the use this method.

step 1

Add string array in string.xml file

 <string-array name="ArrayName">
        <item>A</item>
        <item>B</item>
        <item>C</item>
        <item>D</item>
        <item>E</item>
        <item>F</item>
    </string-array>

add android:entries="@string/ArrayName" in your xml spinner component

and get selected value using String text = spinner.getSelectedItem().toString();

Spinner.setOnItemSelectedListener(new OnItemSelectedListener() 
{
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) 
    {
        Toast.makeText(topThis, "Value = "+spinner.getSelectedItem().toString();, Toast.LENGTH_LONG).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) 
    {
        Toast.makeText(topThis, "herf", Toast.LENGTH_LONG).show();
    }
});

Method 2

for using custom adapter HERE is complete tutorial

Upvotes: 1

Sujay
Sujay

Reputation: 3455

Try this

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

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

        }
    });

Upvotes: 1

windkiosk
windkiosk

Reputation: 490

It looks like:

spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(parent.getContext(),
                    "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                    Toast.LENGTH_SHORT).show();
        }
    });

Upvotes: 1

Related Questions