Reputation: 17548
Is there a way that I can get the previously selected item from a ItemSelected event on a spinner? My first thought was to respond to the OnItemClickedEvent, but that method is not supported for spinners.
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
MyItem current = (MyItem) parent.getItemAtPosition(position);
//MyItem previous = (MyItem) parent.getPrevious ... how
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
//do nothing
}
});
I'm aware I can just cache the previous value, but it seems like a common operation that there should be a method for.
Upvotes: 5
Views: 3317
Reputation: 21
spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
int prev = comboValues.getSelectedItemPosition();
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
prev=position;
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
}
}
);
Note that nothing happens if you select an item you have already selected
Upvotes: 2
Reputation: 9264
Use a variable to track the previous item. It would likely be at member of the Activity.
MyItem previous, current;
...
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
previous = current
current = (MyItem) parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
//do nothing
}
});
Upvotes: 4