2017-09-27 1 views
0

J'ai une application avec un spinner qui contient plusieurs éléments. Je l'ai créé et tout çaAndroid Koltin passer des valeurs spinner à la liste mutable

Quelqu'un pourrait-il me donner un exemple de comment je peux transmettre ces valeurs à une liste que j'ai? En utilisant une liste mutable?

Vive

class NewKitListActivity : AppCompatActivity() { 

var spinnerArray = arrayOf("Dumbell", "Punching Bag", "Yoga Ball", "Skipping Rope") 

val kitMutableList = mutableListOf(spinnerArray) 





override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_new_kit_list) 



    val spinner = newKitItemSpinner 
    val spinnerArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray) 
    //selected item will look like a spinner set from XML 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) 
    spinner.adapter = spinnerArrayAdapter 

    spinner.onItemSelectedListener = object : OnItemSelectedListener { 
     override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { 
      val selectedItem = parent.getItemAtPosition(position).toString() 
      if (selectedItem == "Dumbell") { 

       // mutableListAdapter.toMutableList() 
       //mutableList.adapter = mutableListAdapter 


      } 
     } // to close the onItemSelected 

     override fun onNothingSelected(parent: AdapterView<*>) { 

     } 
    } 
+0

Postez votre code; Dites-nous ce que vous avez essayé et ce qui ne fonctionne pas. – FWeigl

+0

Je ne sais pas si c'est comme ça que vous créez un mutableList val. Et regardez les deux commentés que j'ai, sont-ils corrects? – KirstyHA

Répondre

1

je crois que vous pouvez le faire comme ça. 1. Créer un adaptateur ou des adaptateurs personnalisés 2. Faire une première liste qui contient des valeurs de chaîne 3. Créer une liste modifiable qui contient les valeurs sélectionnées 4. lorsque le serveur est chargé pour la première fois, charger les valeurs du premier adaptateur et la liste 5. lorsque l'utilisateur sélectionne élément qu'il premier adaptateur clair puis notifier les changements cochés alors de nouvelles valeurs de charge de l'adaptateur de la liste mutable (je ne suis pas sûr dernier exigera de notifier les modifications à l'adaptateur)

//Mutable List for storing selected items 

val selectedItems: MutableList<String>? = null 

//Listen On select for spinner 

     spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { 

      //Performing action onItemSelected and onNothing selected 
      override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) { 

       // Add selected item in Mutable List 
       selectedItems.add(spinnerArray[position]) 

       // Clear Adapter 
       spinner.adapter = null 
       // Notify data set changed 
       spinnerArrayAdapter.notifyDataSetChanged() 
       // Set New Data adapter 
       spinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, selectedItems) 


      } 

      override fun onNothingSelected(arg0: AdapterView<*>) { 
       // TODO: Auto-generated method stub 


      } 

     } 
+0

ne remplit pas la liste ... – KirstyHA

+0

Pourquoi n'instanciez-vous pas la liste selectedItems? – FWeigl

0

Créer une liste pour stocker vos selectedItems:

val selectedItems = mutableListOf<String>() 

puis ajoutez les éléments quand ils sont sélectionnés:

override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) { 

      selectedItems.add(spinnerArray[position]) 

    }