【问题标题】:Spinner values to Database微调器值到数据库
【发布时间】:2021-05-09 01:49:08
【问题描述】:

我无法让微调器写入数据库。我阅读了有关微调器的文档,但我肯定做错了什么。有人可以给点建议吗? 我已经阅读了很多教程,但我感到困惑。如何让微调器写入我已经输入的 onClick 中的数据库,并希望再添加 1 个,包括微调器。

  import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class AddActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    
        DatabaseHelper mylogsDB;
        Button btn_save;
        EditText etHours;
        Spinner etShift;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add);
            etHours = (EditText) findViewById(R.id.editText);
            etShift = (Spinner) findViewById(R.id.spinner);
            btn_save = (Button) findViewById(R.id.btn_save);
            mylogsDB = new DatabaseHelper(this);
    
            AddData();
    
            // Spinner click listener
            etShift.setOnItemSelectedListener(this);
    
            // Spinner Drop down elements
            List<String> categories = new ArrayList<>();
            categories.add("Πρωί");
            categories.add("Μεσημέρι");
            categories.add("Νύχτα");
    
            // Creating adapter for spinner
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
    
            // Drop down layout style - list view with radio button
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
            // attaching data adapter to spinner
            etShift.setAdapter(dataAdapter);
        }
    
            public void onItemSelected (AdapterView <?> parent, View view,int position, long id) {
                // On selecting a spinner item
                String item = parent.getItemAtPosition(position).toString();
    
                // Showing selected spinner item
                Toast.makeText(parent.getContext(), "Έχετε επιλέξει: " + item, Toast.LENGTH_LONG).show();
        }
    
    
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    
        public void AddData() {
            btn_save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String hours = etHours.getText().toString();
                    String shift = etShift.getSelectedItem().toString();
    
                    boolean insertData = mylogsDB.addData(hours, shift);
    
                    if (insertData == true) {
                        Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show();
                    }
                }
            });
        }
    }

【问题讨论】:

    标签: android database spinner


    【解决方案1】:

    您需要保留Spinner 中的选定值,然后在您用于插入数据库的方法中使用它

    你也应该在你的btn_saveonClick事件中调用AddData();

    public class AddActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    
        DatabaseHelper mylogsDB;
        Button btn_save;
        EditText etHours;
        Spinner etShift;
        private String spinnerSelectedItem;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add);
            etHours = (EditText) findViewById(R.id.editText);
            etShift = (Spinner) findViewById(R.id.spinner);
            btn_save = (Button) findViewById(R.id.btn_save);
            mylogsDB = new DatabaseHelper(this);
    
            btn_save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AddData();
                }
            });
    
            // Spinner click listener
            etShift.setOnItemSelectedListener(this);
    
            // Spinner Drop down elements
            List<String> categories = new ArrayList<>();
            categories.add("Πρωί");
            categories.add("Μεσημέρι");
            categories.add("Νύχτα");
    
            // Creating adapter for spinner
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
    
            // Drop down layout style - list view with radio button
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
            // attaching data adapter to spinner
            etShift.setAdapter(dataAdapter);
        }
    
        public void onItemSelected (AdapterView <?> parent, View view,int position, long id) {
            // On selecting a spinner item
            spinnerSelectedItem = parent.getItemAtPosition(position).toString();
    
            // Showing selected spinner item
            Toast.makeText(parent.getContext(), "Έχετε επιλέξει: " + spinnerSelectedItem, Toast.LENGTH_LONG).show();
        }
    
    
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    
        public void AddData() {
    
            String hours = etHours.getText().toString();
            //spinnerSelectedItem should have a value
    
            if(!hours.equals("") && !spinnerSelectedItem.equals("")){
                boolean insertData = mylogsDB.addData(hours, spinnerSelectedItem);
                if (insertData == true) {
                    Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show();
                }
            }else{
                //do something
            }
        }
    }
    

    【讨论】:

    • 在这一行给出错误:ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, categories);说找不到声明。与 btn_save 中的等于。
    • 在这一行给出错误:ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, categories);说在(this)中找不到声明。与 btn_save 中的等于。
    • @KostasKoustoulidis 向我展示您如何使用此语句,编辑您的帖子并在您的帖子末尾添加这部分代码[在其中您使用该语句]
    • 现在我用的是手机,所以打字有点困难。但是我在 AddActivity 中复制了您的代码。我认为我应该将其设为 AddActivity.this?
    • @KostasKoustoulidis 这还不够,您必须为btn_save 创建一个onClick 侦听器,然后在该事件中调用AddData();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多