綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 資料表儲存,應用於RadioButton

[複製連結] 查看: 1647|回覆: 5|好評: 0
跳轉到指定樓層
樓主
jianmintai | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2011-11-5 15:39

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
小弟下班時間本身喜歡專研程式設計^^~ 特地買了書來研習~ 看到書本上的資料庫應用~ 我想來個增強版,加入RadioButton,但STRING不知如何去定義,感覺是否不能用字串,^^ 麻煩有經驗的大大們來一起來研究研究~

package com.example.android.db01;



import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class SQLiteTest extends Activity {
        OnClickListener listener_add = null;
        OnClickListener listener_update = null;
        OnClickListener listener_delete = null;
        OnClickListener listener_clear = null;
        OnClickListener listener_list = null;
        OnClickListener listener_finish = null;
       
       
        Button button_add;
        Button button_update;
        Button button_delete;
        Button button_clear;
        Button button_list;
        Button button_finish;
       
        DBConnection helper;
        public int id_this;
        public interface UserSchema {
                        String TABLE_NAME = "Users";          //Table Name
                        String ID = "_id";                    //ID
                        String USER_NAME = "user_name";       //User Name
                        String ADDRESS = "address";           //Address
                        String TELEPHONE = "telephone";       //Phone Number
                        String MAIL_ADDRESS = "mail_address"; //Mail Address
                }
        /** Called when the activity is first created. */
    //SQLiteTest主程式
        @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final EditText mEditText01 = (EditText)findViewById(R.id.EditText01);
                final EditText mEditText02 = (EditText)findViewById(R.id.EditText02);
                final EditText mEditText03 = (EditText)findViewById(R.id.EditText03);
                final EditText mEditText04 = (EditText)findViewById(R.id.EditText04);
               
                   final RadioButton mRadioButton01  = (RadioButton )findViewById(R.id.RadioButton01);
               final RadioButton mRadioButton02  = (RadioButton )findViewById(R.id.RadioButton02);
               
               
                //建立資料庫PhoneBookDB和表單Table:Users
                helper = new DBConnection(this);
        final SQLiteDatabase db = helper.getWritableDatabase();       
        final String[] FROM =
                {   
                UserSchema.ID,
                UserSchema.USER_NAME,
                UserSchema.TELEPHONE,
                UserSchema.ADDRESS,
                UserSchema.MAIL_ADDRESS
                };
        //取得所有資料的USER_NAME,安置在list[]上
        Cursor c = db.query(UserSchema.TABLE_NAME, new String[] {UserSchema.USER_NAME}, null, null, null, null, null);
                c.moveToFirst();
                CharSequence[] list = new CharSequence[c.getCount()];
                for (int i = 0; i < list.length; i++) {
                                list = c.getString(0);
                                c.moveToNext();
                }
                c.close();
                //顯示USER_NAME在Spinner表單-spinner上
                Spinner spinner = (Spinner)findViewById(R.id.Spinner01);
                spinner.setAdapter(new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, list));
                //在Spinner表單-spinner上選定查詢資料,顯示所有資料在畫面上
                spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                String user_name = ((Spinner)parent).getSelectedItem().toString();
                                Cursor c = db.query("Users", FROM , "user_name='" + user_name + "'", null, null, null, null);
                                c.moveToFirst();
                                id_this = Integer.parseInt(c.getString(0));
                                String user_name_this = c.getString(1);
                                String telephone_this = c.getString(2);
                                String address_this = c.getString(3);
                                String mail_address_this = c.getString(4);
                                c.close();
                                mEditText01.setText(user_name_this);
                                mEditText02.setText(telephone_this);
                                mEditText03.setText(address_this);
                                mEditText04.setText(mail_address_this);
                        }
                        public void onNothingSelected(AdapterView<?> parent) {
                        }
                });   
        //按下[Add]按鈕時,新增一筆資料
        listener_add = new OnClickListener() {       
                        public void onClick(View v) {
                                ContentValues values = new ContentValues();
                                values.put(UserSchema.USER_NAME, mEditText01.getText().toString());
                                values.put(UserSchema.TELEPHONE, mEditText02.getText().toString());
                                values.put(UserSchema.ADDRESS, mEditText03.getText().toString());
                                values.put(UserSchema.MAIL_ADDRESS, mEditText04.getText().toString());
                                SQLiteDatabase db = helper.getWritableDatabase();
                                db.insert(UserSchema.TABLE_NAME, null, values);
                                db.close();
                                onCreate(savedInstanceState);
                        }
                };
                //按下[Update]按鈕時,更新一筆資料
                listener_update = new OnClickListener() {
                        public void onClick(View v) {
                                ContentValues values = new ContentValues();
                                values.put(UserSchema.USER_NAME, mEditText01.getText().toString());
                                values.put(UserSchema.TELEPHONE, mEditText02.getText().toString());
                                values.put(UserSchema.ADDRESS, mEditText03.getText().toString());
                                values.put(UserSchema.MAIL_ADDRESS, mEditText04.getText().toString());
                                String where = UserSchema.ID + " = " + id_this;
                                SQLiteDatabase db = helper.getWritableDatabase();
                                db.update(UserSchema.TABLE_NAME, values, where ,null);
                                db.close();
                                onCreate(savedInstanceState);
                        }
                };
                //按下[Delete]按鈕時,刪除一筆資料
                listener_delete = new OnClickListener() {
                        public void onClick(View v) {
                                String where = UserSchema.ID + " = " + id_this;
                                SQLiteDatabase db = helper.getWritableDatabase();
                                db.delete(UserSchema.TABLE_NAME, where ,null);
                                db.close();
                                onCreate(savedInstanceState);
                        }
                };
                //按下[Clear]按鈕時,清空輸入欄位
                listener_clear = new OnClickListener() {
                        public void onClick(View v) {
                                mEditText01.setText("");
                                mEditText02.setText("");
                                mEditText03.setText("");
                                mEditText04.setText("");
                        }
                };
               
               
                listener_list = new OnClickListener() {
                        public void onClick(View v) {
                               
                        }
                       
                };
               
               
                listener_finish = new OnClickListener() {
                        public void onClick(View v) {
                                finish();
                               
                        }
                       
                };
               
               
               
               
               
                //設定BUTTON0i,i=1,2,3,4的OnClickListener
                button_add = (Button)findViewById(R.id.Button01);
                button_add.setOnClickListener(listener_add);
                button_update = (Button)findViewById(R.id.Button02);
                button_update.setOnClickListener(listener_update);
                button_delete = (Button)findViewById(R.id.Button03);
                button_delete.setOnClickListener(listener_delete);       
                button_clear = (Button)findViewById(R.id.Button04);
                button_clear.setOnClickListener(listener_clear);       
                button_list = (Button)findViewById(R.id.Button05);
                button_list.setOnClickListener(listener_list);       
                button_finish = (Button)findViewById(R.id.Button06);
                button_finish.setOnClickListener(listener_finish);       
    }
    //SQLiteOpenHelper-建立資料庫PhoneBookDB和Table:Users
    public static class DBConnection extends SQLiteOpenHelper {
                private static final String DATABASE_NAME = "PhoneBookDB";
                private static final int DATABASE_VERSION = 1;
                private DBConnection(Context ctx) {
                        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
                }
                public void onCreate(SQLiteDatabase db) {
                        String sql = "CREATE TABLE " + UserSchema.TABLE_NAME + " ("
                        + UserSchema.ID  + " INTEGER primary key autoincrement, "
                        + UserSchema.USER_NAME + " text not null, "
                        + UserSchema.TELEPHONE + " text not null, "
                        + UserSchema.ADDRESS + " text not null, "
                        + UserSchema.MAIL_ADDRESS + " text not null "+ ");";
                        //Log.i("haiyang:createDB=", sql);
                        db.execSQL(sql);       
                }
                public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        // TODO Auto-generated method stub       
                }
        }
}
   
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
lkk47 | 收聽TA | 只看該作者
發表於 2011-11-5 18:10
本帖最後由 lkk47 於 2011-11-5 18:12 編輯

我不懂你資料庫為何是使用RadioButton
用途是什麼?
還是說你要把所有的Button改成RadioButton
你說的STRING指的是 text嗎?
也有可能你設計很進階我太嫩了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| jianmintai | 收聽TA | 只看該作者
發表於 2011-11-6 11:23
感謝您的回覆^^RB主要應用在性別選擇或是居住縣市,方便使用者減少打字的機會^^主要是要讓所有資料一起儲存~ 目前小弟只會text的儲存應用^^
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
lkk47 | 收聽TA | 只看該作者
發表於 2011-11-6 11:36

rb的text是顯示資料庫的欄位(資料庫有個欄位是name  text顯示name的內容)不知道你意思是不是這樣?
通常的話都會使用到listview  然後點擊list項目後跳到另外的activity  不過你這個範例就不是跳到新的activity了  這程式很面熟應該是巨x課本的範例
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
ploglin | 收聽TA | 只看該作者
發表於 2011-11-7 09:08
性別的顯示用這個方法我覺得ok~~
但居住縣市的話也可以利用 Spinner 來完成..

不過程式一下子太多,我實在沒辦法一行行看他在做什麼。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
 樓主| jianmintai | 收聽TA | 只看該作者
發表於 2011-11-7 16:57
抱歉版主^^"po全部真的非常不妥,po想問的地方就好沒注意到^^抱歉傷各位眼睛囉,我是有成功儲存進去,不過該怎把資料抓出來秀出還在思考中~.~" 如果用getContentResolver()的方法應用在名為listener_search的button讓已存的資料另外顯示在textview上該怎去實現呢^^?有經驗的先知過目一下^^小弟感激不盡~

OnClickListener listener_add = null;
        OnClickListener listener_update = null;
        OnClickListener listener_delete = null;
        OnClickListener listener_clear = null;
        OnClickListener listener_finish = null;
        OnClickListener listener_search = null;
        Button button_add;
        Button button_update;
        Button button_delete;
        Button button_clear;
        Button button_finish;
        Button button_search;
        RadioButton btncheck1;
        RadioButton btncheck2;
        DBConnection helper;

       
       
        public String SETTING_FILE = "SETTING_File";
        public String SHARED_MSG1 = "Shared_Msg1";
        public String SHARED_MSG2 = "Shared_Msg2";
        public String SHARED_MSG3 = "Shared_Msg3";
        public String SHARED_MSG4 = "Shared_Msg4";
        public String SHARED_MSG5 = "Shared_Msg5";
        /*宣告資料庫介面變數*/
        public int id_this;
        public interface UserSchema {
                        String TABLE_NAME = "Users";          //Table Name
                        String ID = "_id";                    //ID
                        String USER_NAME = "user_name";       //User Name
                        String ADDRESS = "address";           //Address
                        String TELEPHONE = "telephone";       //Phone Number
                        String MAIL_ADDRESS = "mail_address"; //Mail Address
                       
                }
        /** Called when the activity is first created. */
    //SQLiteTest主程式
        @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        
        setContentView(R.layout.main);
        final EditText mEditText01 = (EditText)findViewById(R.id.EditText01);
                final EditText mEditText02 = (EditText)findViewById(R.id.EditText02);
                final EditText mEditText03 = (EditText)findViewById(R.id.EditText03);
               
                btncheck1 = (RadioButton)findViewById(R.id.RadioButton01);
                btncheck2 = (RadioButton)findViewById(R.id.RadioButton02);
                /*讀取優先(離開時的畫面)資料*/
                /*msg12345用來讀取儲存的資料  msg4額外用來判斷離開時RadioButton是否都沒按*/
                SharedPreferences settings = getSharedPreferences(SETTING_FILE, 0);
               
                final String msg1 = settings.getString(SHARED_MSG1, "");
                mEditText01.setText(msg1);
               
                String msg2 = settings.getString(SHARED_MSG2, "");
                mEditText02.setText(msg2);
               
                String msg3 = settings.getString(SHARED_MSG3, "");
                mEditText03.setText(msg3);
               
                String msg4 = settings.getString(SHARED_MSG4, "");

....
/*宣告資料庫變數helper 宣告陣列FROM儲存資料庫的表單*/
                helper = new DBConnection(this);
        final SQLiteDatabase db = helper.getWritableDatabase();       
        final String[] FROM =
                {   
                UserSchema.ID,
                UserSchema.USER_NAME,
                UserSchema.TELEPHONE,
                UserSchema.ADDRESS,
                UserSchema.MAIL_ADDRESS,
               
                };
  //取得所有資料的USER_NAME,安置在list[]上
        Cursor c = db.query(UserSchema.TABLE_NAME, new String[] {UserSchema.USER_NAME}, null, null, null, null, null);
                c.moveToFirst();
                CharSequence[] list = new CharSequence[c.getCount()];
                for (int i = 0; i < list.length; i++) {
                                list[i] = c.getString(0);
                                c.moveToNext();
                }
                c.close();
....


listener_search =



.......

button_search = (Button)findViewById(R.id.Button06);
                button_search.setOnClickListener(listener_search);



//SQLiteOpenHelper-建立資料庫PhoneBookDB和Table:Users
    public static class DBConnection extends SQLiteOpenHelper {
                private static final String DATABASE_NAME = "PhoneBookDB";
                private static final int DATABASE_VERSION = 1;
                DBConnection(Context ctx) {
                        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
                }
                public void onCreate(SQLiteDatabase db) {
                        String sql = "CREATE TABLE " + UserSchema.TABLE_NAME + " ("
                        + UserSchema.ID  + " INTEGER primary key autoincrement, "
                        + UserSchema.USER_NAME + " text not null, "
                        + UserSchema.TELEPHONE + " text not null, "
                        + UserSchema.ADDRESS + " text not null, "
                        + UserSchema.MAIL_ADDRESS + " text not null "+ ");";
                        //Log.i("haiyang:createDB=", sql);
                        db.execSQL(sql);       
                }
                public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        // TODO Auto-generated method stub       
                }
               
        }
       
   
}
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則