Reputation: 5438
I have a tests where I test an OnItemSelectedListener on a Spinner. It works great when testing items that is > 0. But it seems like I can't test the first item.
My current implementation that works if I select items with index > 0 looks like this.
final Addpointer addPointer = getActivity();
addPointer.runOnUiThread(new Runnable() {
@Override
public void run() {
EditText address = (EditText) addPointer.findViewById(R.id.address);
address.setText("a");
Spinner spinner = (Spinner) addPointer.findViewById(R.id.intOrHex);
spinner.setSelection(0);
View view = (View) spinner.getChildAt(0);
long id = spinner.getAdapter().getItemId(0);
spinner.performItemClick(view, 0, id);
}
});
What do I need to do to get the test to "select" the first item?
Thanks in advance
Roland
Answer: 1) Rahul garg about setting "animate" was the key to solve the problem. 2) But you can't trigger onSelectionChanged unless the selection actually changed (0 was initial state so I needed to set it to one before I set it back to zero.
Upvotes: 6
Views: 15266
Reputation: 7484
more "transparent" way:
Spinner.setSelection(Adapter.NO_SELECTION, false);**
*second argument is for selection animation
**this should be called after:
Spinner.setAdapter(...);
or any kind of methods that is involving Spinner.setSelection() for example :
Adapter.notifyDataSetChanged();
& for OnItemSelectedListener() not to fire up
Upvotes: 7
Reputation: 9362
Use
spinner.setSelection(0,true);
The second parameter will actually animate the selection to the 0 index.
Upvotes: 8
Reputation: 8641
Look at the SpinnerTest sample application in the Developer Guide. It actually sends keystrokes to the activity.
Upvotes: 0