【问题标题】:How to save values from a spinner in sqlite database如何在 sqlite 数据库中保存微调器中的值
【发布时间】:2017-08-05 00:50:48
【问题描述】:

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

我添加了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();

                    }
                }
        );
    }
}

【问题讨论】:

标签: android sqlite spinner


【解决方案1】:

使用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 保存到数据库中。

【讨论】:

  • 我实现了你的想法并稍微改变了它。而不是item =String.ValueOf(parent.getItemAtPosition(pos)); 我使用selectedspinner =parent.getSelectedItem().toString(); 但我仍然有第一个值总是保存在数据库中的问题。虽然我选择了第二个例子。你知道我该如何解决这个问题吗?
  • 我解决了!我现在用selectedspinner = (String) ChooseProject.getSelectedItem();还是谢谢你!!
猜你喜欢
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多