2017-08-04 1 views
1

J'ai implémenté un spinner dans mon Unterkunft Activity qui est rempli par les données de la base de données sqlite. Dans cette activité j'ai quelques edit texts et ce spinner. Je veux que les valeurs insérées et la valeur choisie du spinner soient sauvées dans une base de données. Il n'y a pas de problème avec les valeurs des textes d'édition. Mais comment puis-je sauvegarder la valeur de spinner dans la base de données?Comment enregistrer les valeurs d'un spinner dans la base de données sqlite

J'ai ajouté le Unterkunft acitvity

public class activity_unterkunft extends AppCompatActivity { 

    DatabaseHelper myDb; 
    Button btn_save; 
    Spinner ChooseProject; 
    EditText Entfernung,Price,MWST; 


    private BottomNavigationView bottomNavigationView; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_unterkunft); 
     myDb = new DatabaseHelper(this); 

     ChooseProject = (Spinner) findViewById(R.id.ChooseProject); 
     Entfernung = (EditText) findViewById(R.id.Entfernung); 
     Price = (EditText) findViewById(R.id.Preis); 
     MWST = (EditText) findViewById(R.id.MwSt); 
     btn_save=(Button) findViewById(R.id.btn_save); 
     loadSpinnerData(); 
     SaveData(); 


     //++++++++++++BOTTOM NAVIGATION BAR++++++++++++// 
     bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavigationView); 

     bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener(){ 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item){ 
       if (item.getItemId()==R.id.menu_start){ 
        startActivity(new Intent(activity_unterkunft.this, MainActivity.class)); 
       } else if(item.getItemId()==R.id.menu_allgemein){ 
        startActivity(new Intent(activity_unterkunft.this, activity_allgemein.class)); 
       } else if(item.getItemId()==R.id.menu_transport){ 
        startActivity(new Intent(activity_unterkunft.this, activity_transport.class)); 
       } else if(item.getItemId()==R.id.menu_rechnung){ 
        startActivity(new Intent(activity_unterkunft.this, activity_rechnung.class)); 
       } else if(item.getItemId()==R.id.menu_unterkunft){ 
        startActivity(new Intent(activity_unterkunft.this, activity_unterkunft.class)); 
       } 
       return true; 
      } 
     }); 

     bottomNavigationView.setSelectedItemId(R.id.menu_unterkunft); 
    } 

    /** 
    * Function to load the spinner data from SQLite database 
    * */ 
    private void loadSpinnerData() { 
     // database handler 
     DatabaseHelper db = new DatabaseHelper (getApplicationContext()); 

     // Spinner Drop down elements 
     List<String> projects = db.getAllProjects(); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, projects); 

     // Drop down layout style - list view with radio button 
     dataAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     ChooseProject.setPrompt("Projekt auswählen"); 


     // attaching data adapter to spinner 
     ChooseProject.setAdapter(dataAdapter); 
    } 


    //++++++++++++Save Data++++++// 
    public void SaveData(){ 
     btn_save.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean isInserted = myDb.createUnterkunft(
           Integer.valueOf(Price.getText().toString()), 
           Integer.valueOf(MWST.getText().toString()), 
           Integer.valueOf(Entfernung.getText().toString()) 
         ); 
         if(isInserted=true) 
          Toast.makeText(activity_unterkunft.this, "Daten gespeichert", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(activity_unterkunft.this, "Daten nicht gespeichert", Toast.LENGTH_LONG).show(); 

        } 
       } 
     ); 
    } 
} 
+0

Veuillez consulter: [Comment éviter l'utilisation abusive des tags?] (Https://meta.stackoverflow.com/questions/354427/how-do-i-avoid-misusing-tags) – EJoshuaS

Répondre

1

Utilisez setOnItemSelectedListener pour obtenir la valeur de spinner

String item; 

    ChooseProject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
        item =String.ValueOf(parent.getItemAtPosition(pos)); 
       } 
       public void onNothingSelected(AdapterView<?> parent) { 
       } 
      }); 

Ensuite, vous pouvez enregistrer le item aux bases de données.

+0

J'ai implémenté votre idée et l'ai modifiée un petit peu. Au lieu de 'item = String.valueOf (parent.getItemAtPosition (pos));' J'utilise 'selectedspinner = parent.getSelectedItem() toString().' Mais j'ai encore le problème qui a toujours la première valeur est enregistré dans la base de données. Bien que je sélectionne le second par exemple. Savez-vous comment je peux résoudre cela? – Stelios

+1

Je l'ai résolu! J'utilise maintenant 'selectedspinner = (String) ChooseProject.getSelectedItem();' Merci quand même !! – Stelios

+0

Félicitations mec !! –