I am pulling data from a database and populating a series of EditTexts and Spinners with the data.
I can fill the EditTexts without issue but the spinners are resetting to their default values.
I have tried using setSelection() but it doesn't work.
Here is my code:
    spinner = (Spinner) rootView.findViewById(R.id.vehicle);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_spinner_item,
            new String[] {"Car", "Bus", "Plane", "Bicycle"});
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.getOnItemSelectedListener();
    spinner = (Spinner) rootView.findViewById(R.id.category);
    ArrayAdapter<String> adapterCategory = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_spinner_item,
            new String[] {"Vacation", "Commute", "Leisure", "Shopping"});
    adapterCategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapterCategory);
    spinner.getOnItemSelectedListener();
}
public void updateTripView(String position) {
    Cursor cursor = ((TripListActivity)getActivity()).dbHelper.fetchTripById(position);
    if (cursor != null) {
        try {
            String tripId =
                    cursor.getString(cursor.getColumnIndexOrThrow("tripId"));
            int tripCategory =
                    cursor.getInt(cursor.getColumnIndexOrThrow("category"));
            int tripVehicle =
                    cursor.getInt(cursor.getColumnIndexOrThrow("vehicle"));
            String tripDistance =
                    cursor.getString(cursor.getColumnIndexOrThrow("distance"));
            String tripDate =
                    cursor.getString(cursor.getColumnIndexOrThrow("date"));
            String tripNote =
                    cursor.getString(cursor.getColumnIndexOrThrow("note"));
            ((TextView) rootView.findViewById(R.id.tripId)).setText(tripId);
            ((Spinner) rootView.findViewById(R.id.category)).setSelection(tripCategory);
            ((Spinner) rootView.findViewById(R.id.vehicle)).setSelection(tripVehicle);
            ((TextView) rootView.findViewById(R.id.distance)).setText(tripDistance);
            ((TextView) rootView.findViewById(R.id.date)).setText(tripDate);
            ((TextView) rootView.findViewById(R.id.note)).setText(tripNote);
        } catch (IllegalArgumentException e) {
            Log.d(TAG, "IllegalArgumentException");
        }
    }
        mCurrentPosition = position;
}
EDIT: I found a solution based on the answers here: How to set selected item of Spinner by value, not by position?
      //get index value of spinner
private int getIndex(Spinner spinner, String myString)
{
    int index = 0;
    for (int i=0;i<spinner.getCount();i++){
        if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(myString)){
            index = i;
            break;
        }
    }
    return index;
}
And my amended updateTrip class:
    public void updateTripView(String position) {
    Cursor cursor = ((TripListActivity)getActivity()).dbHelper.fetchTripById(position);
    if (cursor != null) {
        try {
            String tripId =
                    cursor.getString(cursor.getColumnIndexOrThrow("tripId"));
            String tripCategory =
                    cursor.getString(cursor.getColumnIndexOrThrow("category"));
            String tripVehicle =
                    cursor.getString(cursor.getColumnIndexOrThrow("vehicle"));
            String tripDistance =
                    cursor.getString(cursor.getColumnIndexOrThrow("distance"));
            String tripDate =
                    cursor.getString(cursor.getColumnIndexOrThrow("date"));
            String tripNote =
                    cursor.getString(cursor.getColumnIndexOrThrow("note"));
            spinner = ((Spinner) rootView.findViewById(R.id.category));
            ArrayAdapter<String> adapterCategory = new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_spinner_item,
                    new String[] {"Vacation", "Commute", "Leisure", "Shopping"});
            spinner.setAdapter(adapterCategory);
            ((TextView) rootView.findViewById(R.id.tripId)).setText(tripId);
            //set spinner value based on index
            spinner.setSelection(getIndex(spinner, tripCategory));
            spinner1 = ((Spinner) rootView.findViewById(R.id.vehicle));
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_spinner_item,
                    new String[] {"Car", "Bus", "Plane", "Bicycle"});
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner1.setAdapter(adapter);
            //set spinner value based on index
            spinner1.setSelection(getIndex(spinner1, tripVehicle));
            ((TextView) rootView.findViewById(R.id.distance)).setText(tripDistance);
            ((TextView) rootView.findViewById(R.id.date)).setText(tripDate);
            ((TextView) rootView.findViewById(R.id.note)).setText(tripNote);
        } catch (IllegalArgumentException e) {
            Log.d(TAG, "IllegalArgumentException");
        }
    }
        mCurrentPosition = position;
}
 
    