如何保存来自sqlite数据库中的微调框的值

问题描述:

我在我的Unterkunft Activity中实现了一个微调框,它由来自sqlite数据库的数据填充。 在这个活动中,我有几个edit texts和这个spinner。我希望插入的值和来自微调器的选定值保存在数据库中。编辑文本值没有问题。但是,如何将微调器值保存在数据库中?如何保存来自sqlite数据库中的微调框的值

我加入了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

请参阅:[如何避免滥用标签?](https://meta.*.com/questions/354427/how-do-i-avoid-misusing-tags) – EJoshuaS

使用setOnItemSelectedListener得到微调值

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) { 
       } 
      }); 

然后您可以将item保存到数据库。

+0

我实现了你的想法并改变了它一点点。 相反 '项目=将String.valueOf(parent.getItemAtPosition(POS));' 我用 'selectedspinner = parent.getSelectedItem()的toString();' 但我还有问题总是第一个值保存在数据库中。尽管我选择了第二个例子。你知道我怎么能解决这个问题吗? – Stelios

+1

我解决了它!我现在使用'selectedspinner =(String)ChooseProject.getSelectedItem();' 谢谢! – Stelios

+0

恭喜男人! –