Search code examples
androidandroid-studioparse-platformandroid-spinnergetselection

Get Spinner Selection after dynamically filling it with Parse.com


I am trying to get the spinner selection after it has been filled using Parse.com

This is what I get when I use uniSpinner.getSelectedItem().toString(); This is what I get:

com.parse.ParseObject@"Some numbers here, not the ID stored in parse"

The below code also produces the same outcome:

Toast.makeText(parent.getContext(), "test: " +
            parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();

Here is my code that creates the spinner:

 public void uniSpinnerSetup()
{
    ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
        public ParseQuery create() {
            ParseQuery query = new ParseQuery("University");
            return query;
        }
    };

    uniSpinner = (Spinner) findViewById(R.id.uniSpinner);

    ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(this, factory);
    adapter.setTextKey("name");
    uniSpinner.setAdapter(adapter);
    uniSpinner.setSelection(1);
    uniSpinner.setOnItemSelectedListener(new mySpinnerListener());
}

class mySpinnerListener implements Spinner.OnItemSelectedListener
{
    @Override
    public void onItemSelected(AdapterView parent, View v, int position,long id) {
        // TODO Auto-generated method stub
        Toast.makeText(parent.getContext(), "test: " +
                parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();

    }

    @Override
    public void onNothingSelected(AdapterView parent) {
        // TODO Auto-generated method stub
        // Do nothing.
    }

}

I've looked high and low to try and resolve it, have not found a solution! Any help please?


Solution

  • (Correct answer is in the comments sections)

    Move your adapter out as a field variable and get your object using that:

    ParseQueryAdapter<ParseObject> adapter;
    
     public void uniSpinnerSetup()
    {
        ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
            public ParseQuery create() {
                ParseQuery query = new ParseQuery("University");
                return query;
            }
        };
    
        uniSpinner = (Spinner) findViewById(R.id.uniSpinner);
    
        adapter = new ParseQueryAdapter<ParseObject>(this, factory);
        adapter.setTextKey("name");
        uniSpinner.setAdapter(adapter);
        uniSpinner.setSelection(1);
        uniSpinner.setOnItemSelectedListener(new mySpinnerListener());
    }
    
    class mySpinnerListener implements Spinner.OnItemSelectedListener
    {
        @Override
        public void onItemSelected(AdapterView parent, View v, int position,long id) {
            // TODO Auto-generated method stub
            ParseObject theSelectedObject = adapter.getItem(position);
            Toast.makeText(parent.getContext(), "test: " +
                    theSelectedObject.toString(), Toast.LENGTH_LONG).show();
    
        }
    
        @Override
        public void onNothingSelected(AdapterView parent) {
            // TODO Auto-generated method stub
            // Do nothing.
        }
    
    }