Kyril Khaltesky
Kyril Khaltesky

Reputation: 85

ArrayAdapter crashes when adding new items to adapter

I am facing a problem that when I try to dynamically add items to my spinner the app crashes. So first I add an array from Strings.xml my R.array.restrictions contains 16 items therefore I am inserting each key into 16 and then adding it onto the next position. and after that I load each item from firebase and add it to the adapter, then I set the adapter, so in my mind it should work. Any ideas why it causes a crash? Says:

UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148)

Thanks.

    public void startSpinner(){

    //built in Profiles
    spinner = (Spinner) findViewById(R.id.spinnerProfiles);
    adapter = ArrayAdapter.createFromResource(this, R.array.restrictions, android.R.layout.simple_spinner_item);

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            map = (Map<String, Object>) dataSnapshot.child("users").child(userID).getValue();
            ArrayList<String> array  = new ArrayList<>();
            int x = 16;
            for (Map.Entry<String,Object> entry : map.entrySet()) {
                // key contains Profile Name
                String key = entry.getKey();
                adapter.insert(key, x);
                x++;
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            //Auto Generated Method
        }
    });
    adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);
}

Upvotes: 0

Views: 140

Answers (1)

Doron Yakovlev Golani
Doron Yakovlev Golani

Reputation: 5470

Perhaps the problem is that you are changing an array that is coming from resources. This can happen as the list you are using is not created by you. You can try the following:

ArrayList<CharSequence> array = new ArrayList<CharSequence>(Arrays.asList(context.getResources().getTextArray(R.array.restrictions)));
adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, array);

Upvotes: 2

Related Questions