Как добавить больше элементов во время выполнения в spinner

если у нас есть некоторые элементы в средстве счетчика (как показано ниже), как мы можем добавить дополнительные элементы во время выполнения

вот код:

    String[] Items = {
                "Alarm",
                "Office",
                "Meeting",
                "Party",
                "Lunch",
                "Breakfast",
                "Supper",
                "Home",
                "Private",
                "Outdoor",
                "Family",
                "Friends",
                "Others"
        };

    Spinner s1;

а также

  s1 = (Spinner) findViewById(R.id.spinner);

   ArrayAdapter<String> adapter  = new ArrayAdapter<String>(
            this,android.R.layout.simple_spinner_item,Items);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s1.setAdapter(adapter);
    s1.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        public void onItemSelected(AdapterView<?> arg0, 
        View arg1, int arg2, long arg3) 
        {
            int index = s1.getSelectedItemPosition();
            Toast.makeText(getBaseContext(), 
                "You have selected item : " + Items[index], 
                Toast.LENGTH_SHORT).show(); 

            if (index==12)
            {
                EditText edit = (EditText) findViewById(R.id.edittext);
                Button add=(Button) findViewById(R.id.add);
                edit.setVisibility(View.VISIBLE);
                add.setVisibility(View.VISIBLE);


         }
            else
            {
                EditText edit = (EditText) findViewById(R.id.edittext);
                Button add=(Button) findViewById(R.id.add);
                edit.setVisibility(View.GONE);
                add.setVisibility(View.GONE);
            }
        }

        public void onNothingSelected(AdapterView<?> arg0) {}
    });  

}

В нем, если выбрать «другое», мы можем добавить дополнительные элементы в список счетчиков.

благодарю вас,


person ezhil    schedule 21.02.2011    source источник


Ответы (3)


Надеюсь, вы сможете обнаружить случай, когда пользователь выбрал "другие"

в этом случае добавьте другие значения в свой массив Items и вызовите функцию adapter.notifyDataSetChanged(), она должна учитывать изменения, и вы должны увидеть новые значения в счетчике.

попробуйте это и вернуться.

person Aman Alam    schedule 21.02.2011

Вы можете создать BaseAdapter, заполнить его во время выполнения и назначить адаптер для спиннер.

person Pedro Fraca    schedule 21.02.2011
comment
Ты прав! Он может объединить два решения, изменив baseAdapter и уведомив счетчик с помощью notifyDataSetChanged. я прав? - person Pedro Fraca; 21.02.2011

Следующие работы для меня:

/* Read values from resource into an array */
String[] strColorValues =  getResources().getStringArray(R.array.colors);

ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < strColorValues.length; i++) {
    list.add(strColorValues[i]);
}

ArrayAdapter adapterColors = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_item, list);

adapterColors.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinnerColors.setAdapter(adapterPermissionLevels);
spinnerColors.setOnItemSelectedListener(this);

/* Remove first element from the adapter and notify dataset changed. */
String item = spinnerColors.getItemAtPosition(0).toString();
adapterColors.remove(item);
adapterColors.notifyDataSetChanged();
person Amit Garg    schedule 28.01.2015