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?
(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.
}
}