将复选框值插入Sqlite数据库

时间:2018-01-20 16:31:25

标签: android checkbox android-sqlite

我有多个复选框。我打算将所选复选框保存到sqlite数据库中.Ex:如果选中它,则值应为1.如果未选中,则值应为0.我的当前代码正在保存所有复选框文本。请指教。 基

这是我的代码

主要活动。

    Spinner s1,s2,s3;
        Button btnAdd;
        EditText inputLabel;
        DatabaseHandler dbhndlr;
        Cursor spinner1csr, spinner2csr;
        SimpleCursorAdapter sca, sca2;
        long spinner1_selected = 0;
        CheckBox ck1,ck2,ck3,ck4,ck5,ck6,ck7,ck8;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_spinner_ex4);
            s1 = (Spinner)findViewById(R.id.spinner1);
            s2 = (Spinner)findViewById(R.id.spinner2);
            s3 = (Spinner)findViewById(R.id.spinner3);
            btnAdd = (Button) findViewById(R.id.btn_add);
            inputLabel = (EditText) findViewById(R.id.input_label);
            dbhndlr = new DatabaseHandler(this);
            ck1=(CheckBox) findViewById(R.id.checkBox);
            ck2=(CheckBox)findViewById(R.id.checkBox2);
            ck3=(CheckBox)findViewById(R.id.checkBox3);
            ck4=(CheckBox)findViewById(R.id.checkBox4);
            ck6=(CheckBox) findViewById(R.id.checkBox5);
            ck7=(CheckBox)findViewById(R.id.checkBox6);
            ck8=(CheckBox)findViewById(R.id.checkBox7);

            loadSpinnerData();

            if (DatabaseUtils.queryNumEntries(dbhndlr.getWritableDatabase(),DatabaseHandler.TABLE_LABELS) < 1) {
                dbhndlr.insertlabel("899","Chris");
                dbhndlr.insertlabel("890","David");
            }


            // Get Cursors for Spinners
            spinner1csr = dbhndlr.getAllLabelsAsCursor();
            //Setup Adapter for Spinner 1
            sca = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_1,spinner1csr,
                    new String[]{DatabaseHandler.KEY_NAME},
                    new int[]{android.R.id.text1},
                    0
            );

            // Set the Adapters to the Spinners
            s1.setAdapter(sca);
            // Set Spinner1 OnSelectedItemListener



            s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(parent.getContext(),
                            "You Selected: " + id + " - " +
                                    spinner1csr.getString(
                                            spinner1csr.getColumnIndex(DatabaseHandler.KEY_NAME)) +
                                    " - " + spinner1csr.getString(spinner1csr.getColumnIndex(DatabaseHandler.KEY_ID))
                            ,
                            Toast.LENGTH_SHORT).show();
                    spinner1_selected = id;
                    spinner2csr = dbhndlr.getByRowid(spinner1_selected);
                    sca2.swapCursor(spinner2csr);
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                }
            });

            //Steup Adapter for Spinner2
            spinner2csr = dbhndlr.getByRowid(spinner1_selected);
            sca2 = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_1,
                    spinner2csr,
                    new String[]{DatabaseHandler.KEY_ID},
                    new int[]{android.R.id.text1},
                    0
            );
            s2.setAdapter(sca2);
            // Set Spinner2 OnSelectedItemListener
        /* Not needed
        s2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(parent.getContext(),
                        "You Selected: " + id + " - " +
                                spinner2csr.getString(
                                        spinner2csr.getColumnIndex(DatabaseHandler.KEY_NAME)) +
                                " - " + spinner2csr.getString(spinner2csr.getColumnIndex(DatabaseHandler.KEY_ID)),
                        Toast.LENGTH_SHORT).show();
                spinner2_selected = id;
                spinner1csr = dbhndlr.getAllLabelsExceptedSelected(spinner2_selected);
                sca.swapCursor(spinner1csr);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        */

            btnAdd.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                        //String label = inputLabel.getText().toString();
                    String SaveString="No";
                    ck1.isChecked();
                    DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                    String message1= ((Cursor) s1.getSelectedItem()).getString(2);
                    String message2= ((Cursor) s2.getSelectedItem()).getString(1);
                    String message = inputLabel.getText().toString();
                   // String message1 = s1.getSelectedItem().toString();
                   // String message2 = s2.getSelectedItem().toString();
                    String message10 = s3.getSelectedItem().toString();
                    String message4 = ck1.getText().toString();
                    String message5 = ck2.getText().toString();
                    String message6 = ck3.getText().toString();
                    String message7 = ck4.getText().toString();
                    String message9 = ck6.getText().toString();
                    String message3 = ck7.getText().toString();
                    String message8 = ck8.getText().toString();
                    db.insertLabel(message1,message2,message5,message6,message7,message9,message3,message4,message8,message10);
                    if (ck1.isChecked())
                    { SaveString="Yes";
                    }
                    else
                    {  SaveString="No";
                    }

                    if (ck2.isChecked())
                    { SaveString="Yes";
                    }
                    else
                    {  SaveString="No";
                    }

                    if (message.trim().length() > 0) {
                        // database handler commeneted out, use dbhndlr instance instead
                        // inserting new label into database


                        // making input filed text to blank
                        inputLabel.setText("");

                        // Hiding the keyboard
                        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(inputLabel.getWindowToken(), 0);

                        // loading spinner with newly added data
                        spinner1csr = dbhndlr.getAllLabelsAsCursor();
                        spinner2csr = dbhndlr.getByRowid(spinner1_selected);
                        sca.swapCursor(spinner1csr);
                        sca2.swapCursor(spinner2csr);
                    } else {
                        Toast.makeText(getApplicationContext(), "Please enter label name",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    private void loadSpinnerData() {
        // database handler
        DatabaseHandler db = new DatabaseHandler(getApplicationContext());

        // Spinner Drop down elements
        List<String> lables = db.getAllLabels();

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

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

        // attaching data adapter to spinner
        s3.setAdapter(dataAdapter1);
    }
        @Override
        public void onDestroy() {
            spinner1csr.close();
            spinner2csr.close();
            super.onDestroy();
        }
    }

数据库

public class DatabaseHandler extends SQLiteOpenHelper {
        // Database Version
        public static final int DATABASE_VERSION = 1;

        // Database Name
        public static final String DATABASE_NAME = "spinnerExample";

        // Labels table name
        public static final String TABLE_LABELS = "labels"; //<<<< Made public
        public static final String TABLE_LABELS1= "labels1";
        public static final String TABLE_LABELS2= "labels2";
        // Labels Table Columns names
        public static final String KEY_ID4 = "input_label";
        public static final String KEY_ID = "id";           //<<<< Made public
        public static final String KEY_NAME = "name";       //<<<< made public
        public static final String KEY_ID1 = "id1";           //<<<< Made public
        public static final String KEY_NAME1 = "name1";
        public static final String KEY_1 = "number";           //<<<< Made public
        public static final String KEY_2 = "outletname";       //<<<< made public
        public static final String KEY_3 = "sunday";           //<<<< Made public
        public static final String KEY_4 = "monday";
        public static final String KEY_5 = "tuesday";
        public static final String KEY_6 = "wednesday";
        public static final String KEY_7 = "thursday";
        public static final String KEY_8 = "saturday";
        public static final String KEY_9 = "closed";
        public static final String KEY_10 = "calling";

        public DatabaseHandler(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        // Creating Tables
        @Override
        public void onCreate(SQLiteDatabase db) {
            // Category table create query
            String CREATE_CATEGORIES_TABLE = "CREATE TABLE " + TABLE_LABELS + "("
                    + KEY_ID + " TEXT," + KEY_NAME + " TEXT)";
            String CREATE_CATEGORIES_TABLE1 = "CREATE TABLE " + TABLE_LABELS1 + "("
                    + KEY_ID1+ " TEXT," + KEY_NAME1+ " TEXT)";
            db.execSQL(CREATE_CATEGORIES_TABLE);
            db.execSQL(CREATE_CATEGORIES_TABLE1);
        }

        // Upgrading database
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // Drop older table if existed
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS);
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS1);
            // Create tables again
            onCreate(db);
        }

        // Added for adding new data
        public void insertlabel(String id, String label) {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put(KEY_ID,id);
            cv.put(KEY_NAME,label);
            db.insert(TABLE_LABELS,null,cv);
            db.close();
        }

        /**
         * Inserting new lable into lables table
         * */
            public void insertLabel(String message1, String message2,String message3,String message4,String message5,String message6,String message7,String message8,String message9,String message10){
                SQLiteDatabase db = this.getWritableDatabase();

                ContentValues values = new ContentValues();

                values.put(KEY_1, message1);
                values.put(KEY_2, message2);
                values.put(KEY_10,message10);
                values.put(KEY_3,message3);
                values.put(KEY_4,message4);
                values.put(KEY_5,message5);
                values.put(KEY_6,message6);
                values.put(KEY_7,message7);
                values.put(KEY_9,message9);

                values.put(KEY_8,message8);


                // Inserting Row
                db.insert(TABLE_LABELS2, null, values);
                db.close(); // Closing database connection
            }

        public void insertLabel1(String label){
            SQLiteDatabase db = this.getWritableDatabase();

            ContentValues values = new ContentValues();
            values.put(KEY_NAME1, label);

            // Inserting Row
            db.insert(TABLE_LABELS1, null, values);
            db.close(); // Closing database connection
        }
        public void insertLabel2(String label){
            SQLiteDatabase db = this.getWritableDatabase();


            ContentValues values = new ContentValues();
            values.put(KEY_NAME1, label);
            values.put(KEY_10, label);
            values.put(KEY_ID, label);

            db.insert(TABLE_LABELS2, null, values);
            db.close(); // Closing database connection
        }

        public List<String> getAllLabels(){
            List<String> labels = new ArrayList<String>();

            // Select All Query
            String selectQuery = "SELECT  * FROM " + TABLE_LABELS1;

            SQLiteDatabase db = this.getReadableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);

            // looping through all rows and adding to list
            if (cursor.moveToFirst()) {
                do {
                    labels.add(cursor.getString(1));
                } while (cursor.moveToNext());
            }

            // closing connection
            cursor.close();
            db.close();

            // returning lables
            return labels;
        }



        // Added to get Cursor for Simple CursorAdapter
        public Cursor getAllLabelsAsCursor() {
            String[] columns = new String[]{"rowid AS _id, *"}; // Need _id column for SimpleCursorAdapter
            return this.getWritableDatabase().query(TABLE_LABELS,columns,null,null,null,null,null);
        }

        public Cursor getAllLabelsExceptedSelected(long selected) {
            String[] columns = new String[]{"rowid AS _id, *"};
            String whereclause = "rowid <> ?";
            String[] whereargs = new String[]{String.valueOf(selected)};
            return this.getWritableDatabase().query(TABLE_LABELS,
                    columns,
                    whereclause,
                    whereargs,
                    null,
                    null,
                    null
            );
        }

        public Cursor getByRowid(long id) {
            String[] columns = new String[]{"rowid AS _id, *"};
            return this.getWritableDatabase().query(
                    TABLE_LABELS,
                    columns,
                    "rowid=?",
                    new String[]{String.valueOf(id)},
                    null,null,null
            );


        }

    }

2 个答案:

答案 0 :(得分:1)

使用此代码保存复选框值

 CheckboxName.isChecked();

答案 1 :(得分:1)

您可以直接使用ternary operator这样的

进行存储
ck1.isChecked()?1:0

例如

db.insertLabel(ck1.isChecked()?1:0,ck2.isChecked()?1:0,ck3.isChecked()?1:0);