Comment puis-je append des éléments à un spinner dans Android?

Comment puis-je append des articles à un spinner?

Fichier XML:

 

Fichier Java:

 public class SpinnerExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Ssortingng[] arraySpinner = new Ssortingng[] { "1", "2", "3", "4", "5" }; Spinner s = (Spinner) findViewById(R.id.Spinner01); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, arraySpinner); adapter.setDropDownViewResource(android.R.layout.simple_spin‌​ner_dropdown_item); s.setAdapter(adapter); } } 

Voir l’exemple de spinner .

J’ai trouvé une autre option: définition spinner dans le fichier de mise en page

  

Définition des éléments dans le fichier array.xml:

   item1 item2 item3 item4   

Lien vers la source complète du code

Essayez ce code:

 final List list = new ArrayList(); list.add("Item 1"); list.add("Item 2"); list.add("Item 3"); list.add("Item 4"); list.add("Item 5"); final Ssortingng[] str = {"Report 1", "Report 2", "Report 3", "Report 4", "Report 5"}; final Spinner sp1 = (Spinner) findViewById(R.id.spinner1); final Spinner sp2 = (Spinner) findViewById(R.id.spinner2); ArrayAdapter adp1 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp1.setAdapter(adp1); ArrayAdapter adp2 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, str); adp2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp2.setAdapter(adp2); sp1.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView< ?> arg0, View arg1, int position, long id) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), list.get(position), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView< ?> arg0) { // TODO Auto-generated method stub } }); sp2.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView< ?> arg0, View arg1, int position, long id) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), str[position], Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView< ?> arg0) { // TODO Auto-generated method stub } }); 

Vous pouvez également append une valeur d’élément Spinner via le fichier XML du tableau de chaînes.

  Spinner_ex5 Hello world! Settings MainActivity  Data 1 Data 2 Data 3 Data 4 Data 5   

Dans mainActivity.java:

 final Spinner sp3 = (Spinner) findViewById(R.id.spinner3); ArrayAdapter adp3 = ArrayAdapter.createFromResource(this, R.array.str2, android.R.layout.simple_list_item_1); adp3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp3.setAdapter(adp3); sp3.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView< ?> arg0, View arg1, int position, long id) { // TODO Auto-generated method stub Ssortingng ss = sp3.getSelectedItem().toSsortingng(); Toast.makeText(getBaseContext(), ss, Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView< ?> arg0) { // TODO Auto-generated method stub } }); 

Pour append un élément dans Spinner, vous pouvez faire une chose, essayez de créer un adaptateur, puis ajoutez / supprimez des éléments dans l’adaptateur, puis vous pouvez facilement lier cet adaptateur à spinner en utilisant la méthode setAdapter() .

Voici un exemple:

 spinner.setAdapter(adapter); adapter.add(item1); adapter.add(item2); adapter.add(item3); adapter.add(item4); adapter.add(item5); adapter.notifyDataSetChanged(); spinner.setAdapter(adapter); 

Ce code lit essentiellement un object de tableau JSON et convertit chaque ligne en une option du spinner transmise en paramètre:

 public ArrayAdapter getArrayAdapterFromArrayListForSpinner(ArrayList aArrayList, Ssortingng aField) { ArrayAdapter aArrayAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item); aArrayAdapter.setDropDownViewResource(R.layout.multiline_spinner_dropdown_item); //android.R.layout.simple_spinner_dropdown_item try { for (int i = 0; i < aArrayList.size(); i++) { aArrayAdapter.add(aArrayList.get(i).getString(aField)); } } catch (JSONException e) { e.printStackTrace(); ShowMessage("Error while reading the JSON list"); } return aArrayAdapter; } 
  Array Item One Array Item Two Array Item Three  

Dans votre mise en page:

  

Ajoutez un spinner à la mise en page XML, puis ajoutez ce code au fichier Java:

 Spinner spinner; spinner = (Spinner) findViewById(R.id.spinner1) ; java.util.ArrayList ssortingngs = new java.util.ArrayList<>(); strings.add("Mobile") ; strings.add("Home"); strings.add("Work"); SpinnerAdapter spinnerAdapter = new SpinnerAdapter(AddMember.this, R.layout.support_simple_spinner_dropdown_item, strings); spinner.setAdapter(spinnerAdapter); 

Ajoutez ce code après avoir mis à jour la liste

Supposer:

Le nom de variable ArrayAdapter est dataAdapter et le nom de la variable List est keys .

  • dataAdapter.addAll (clés);
  • dataAdapter.notifyDataSetChanged ();

C’est juste pour effacer l’adaptateur, append tous les itens et notifier le changement comme ci-dessous:

  public void show(List objLIst) { adapter.clear(); adapter.addAll(objLIst); adapter.notifyDataSetChanged(); } 

Un moyen plus simple consiste à utiliser la bibliothèque de matériel: https://github.com/jaredrummler/MaterialSpinner

ajoutez d’abord à votre projet:

 comstack 'com.jaredrummler:material-spinner:1.2.4' 

et utiliser comme ceci:

  

et le code Java que vous pouvez append des éléments dans Java si facile:

 MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner); spinner.setItems("item 1", "item 2", "item 3", "item 4", "item 5"); spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener() { @Override public void onItemSelected(MaterialSpinner view, int position, long id, Ssortingng item) { Snackbar.make(view, "Clicked " + item, Snackbar.LENGTH_LONG).show(); } }); 

Pour append un article à Spinner, vous pouvez:

 ArrayAdapter myAdapter = ((ArrayAdapter) mySpinner.getAdapter()); myAdapter.add(myValue); myAdapter.notifyDataSetChanged();