本範例安置很多widget(不是很smart的方式), 故code很長, 分為兩篇~
預設為將財產分配以EditText呈現, 分為4個類別:遊學基金", "結婚基金", "買房基金", "養老基金", User是可以自行更改的, 變動會紀錄在SQLite中.
另外有+1萬與-1萬的ImageButton來調整資金分配, 最下方的TextView會統計總需金額~
Fund_SQLiteActivity.java
package com.tsots.Fund_SQLite; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class Fund_SQLiteActivity extends Activity { @Override protected void onPause() { SQLite_record_item1(); SQLite_record_item2(); SQLite_record_item3(); SQLite_record_item4(); super.onPause(); } Context context = Fund_SQLiteActivity.this; String TAG = "Fund_SQLiteActivity.this"; /*建立SQLite, 2個table表, 一個放存款目的紀錄, 一個放存款金額紀錄*/ String tables[] = {"fund_data", "fund_item"}; String fieldNames[][] = { { "fund_id", "fund_money1", "fund_money2", "fund_money3", "fund_money4"}, { "fund_id", "fund_item1", "fund_item2", "fund_item3", "fund_item4"} }; String fieldTypes[][] = { { "INTEGER PRIMARY KEY AUTOINCREMENT", "text", "text", "text", "text"}, { "INTEGER PRIMARY KEY AUTOINCREMENT", "text", "text", "text", "text"} }; int version = 1; private Fund_SQLiteOpenHelper dbHelper = new Fund_SQLiteOpenHelper ( this, "fund_SQLite.db", null, version, tables, fieldNames, fieldTypes ); EditText et_item1, et_item2, et_item3, et_item4; TextView tv_money1, tv_money2, tv_money3, tv_money4, tv_total; ImageButton ib_add1, ib_add2, ib_add3, ib_add4; ImageButton ib_del1, ib_del2, ib_del3, ib_del4; ImageView iv1_1,iv1_2,iv1_3,iv1_4,iv1_5,iv1_6,iv1_7,iv1_8,iv1_9,iv1_10; ImageView iv2_1,iv2_2,iv2_3,iv2_4,iv2_5,iv2_6,iv2_7,iv2_8,iv2_9,iv2_10; ImageView iv3_1,iv3_2,iv3_3,iv3_4,iv3_5,iv3_6,iv3_7,iv3_8,iv3_9,iv3_10; ImageView iv4_1,iv4_2,iv4_3,iv4_4,iv4_5,iv4_6,iv4_7,iv4_8,iv4_9,iv4_10; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et_item1 = (EditText) findViewById (R.id.et_item1); et_item2 = (EditText) findViewById (R.id.et_item2); et_item3 = (EditText) findViewById (R.id.et_item3); et_item4 = (EditText) findViewById (R.id.et_item4); tv_money1 = (TextView) findViewById (R.id.tv_money1); tv_money2 = (TextView) findViewById (R.id.tv_money2); tv_money3 = (TextView) findViewById (R.id.tv_money3); tv_money4 = (TextView) findViewById (R.id.tv_money4); tv_total = (TextView) findViewById (R.id.tv_total); ib_add1 = (ImageButton) findViewById (R.id.ib_add1); ib_del1 = (ImageButton) findViewById (R.id.ib_del1); ib_add2 = (ImageButton) findViewById (R.id.ib_add2); ib_del2 = (ImageButton) findViewById (R.id.ib_del2); ib_add3 = (ImageButton) findViewById (R.id.ib_add3); ib_del3 = (ImageButton) findViewById (R.id.ib_del3); ib_add4 = (ImageButton) findViewById (R.id.ib_add4); ib_del4 = (ImageButton) findViewById (R.id.ib_del4); iv1_1 = (ImageView) findViewById (R.id.iv1_1); iv1_2 = (ImageView) findViewById (R.id.iv1_2); iv1_3 = (ImageView) findViewById (R.id.iv1_3); iv1_4 = (ImageView) findViewById (R.id.iv1_4); iv1_5 = (ImageView) findViewById (R.id.iv1_5); iv1_6 = (ImageView) findViewById (R.id.iv1_6); iv1_7 = (ImageView) findViewById (R.id.iv1_7); iv1_8 = (ImageView) findViewById (R.id.iv1_8); iv1_9 = (ImageView) findViewById (R.id.iv1_9); iv1_10 = (ImageView) findViewById (R.id.iv1_10); iv2_1 = (ImageView) findViewById (R.id.iv2_1); iv2_2 = (ImageView) findViewById (R.id.iv2_2); iv2_3 = (ImageView) findViewById (R.id.iv2_3); iv2_4 = (ImageView) findViewById (R.id.iv2_4); iv2_5 = (ImageView) findViewById (R.id.iv2_5); iv2_6 = (ImageView) findViewById (R.id.iv2_6); iv2_7 = (ImageView) findViewById (R.id.iv2_7); iv2_8 = (ImageView) findViewById (R.id.iv2_8); iv2_9 = (ImageView) findViewById (R.id.iv2_9); iv2_10 = (ImageView) findViewById (R.id.iv2_10); iv3_1 = (ImageView) findViewById (R.id.iv3_1); iv3_2 = (ImageView) findViewById (R.id.iv3_2); iv3_3 = (ImageView) findViewById (R.id.iv3_3); iv3_4 = (ImageView) findViewById (R.id.iv3_4); iv3_5 = (ImageView) findViewById (R.id.iv3_5); iv3_6 = (ImageView) findViewById (R.id.iv3_6); iv3_7 = (ImageView) findViewById (R.id.iv3_7); iv3_8 = (ImageView) findViewById (R.id.iv3_8); iv3_9 = (ImageView) findViewById (R.id.iv3_9); iv3_10 = (ImageView) findViewById (R.id.iv3_10); iv4_1 = (ImageView) findViewById (R.id.iv4_1); iv4_2 = (ImageView) findViewById (R.id.iv4_2); iv4_3 = (ImageView) findViewById (R.id.iv4_3); iv4_4 = (ImageView) findViewById (R.id.iv4_4); iv4_5 = (ImageView) findViewById (R.id.iv4_5); iv4_6 = (ImageView) findViewById (R.id.iv4_6); iv4_7 = (ImageView) findViewById (R.id.iv4_7); iv4_8 = (ImageView) findViewById (R.id.iv4_8); iv4_9 = (ImageView) findViewById (R.id.iv4_9); iv4_10 = (ImageView) findViewById (R.id.iv4_10); SQLite_init(); calculator_total(); //載入SQLite裡的值 try { Cursor c = dbHelper.select(tables[0], null, null, null, null, null, null); c.moveToFirst(); tv_money1.setText(c.getString(1)); show_coin1(Integer.valueOf(c.getString(1))); tv_money2.setText(c.getString(2)); show_coin2(Integer.valueOf(c.getString(2))); tv_money3.setText(c.getString(3)); show_coin3(Integer.valueOf(c.getString(3))); tv_money4.setText(c.getString(4)); show_coin4(Integer.valueOf(c.getString(4))); c.close(); } catch(Exception e) { Log.d(TAG, "Exception: " + e); } //載入SQLite裡的值 try { Cursor c = dbHelper.select(tables[1], null, null, null, null, null, null); c.moveToFirst(); et_item1.setText(c.getString(1)); et_item2.setText(c.getString(2)); et_item3.setText(c.getString(3)); et_item4.setText(c.getString(4)); c.close(); } catch(Exception e) { Log.d(TAG, "Exception: " + e); } //監聽EditText的變化, 並更新到SQLite中 et_item1.setOnKeyListener(new EditText.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { SQLite_record_item1(); return false; } }); et_item2.setOnKeyListener(new EditText.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { SQLite_record_item2(); return false; } }); et_item3.setOnKeyListener(new EditText.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { SQLite_record_item3(); return false; } }); et_item4.setOnKeyListener(new EditText.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { SQLite_record_item4(); return false; } }); //加一萬 ib_add1.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money1 = Integer.parseInt(tv_money1.getText().toString()); String str_money1 = String.valueOf(money1+1); tv_money1.setText(str_money1); SQLite_record1(str_money1); show_coin1(money1+1); calculator_total(); } }); //加一萬 ib_add2.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money2 = Integer.parseInt(tv_money2.getText().toString()); String str_money2 = String.valueOf(money2+1); tv_money2.setText(str_money2); SQLite_record2(str_money2); show_coin2(money2+1); calculator_total(); } }); //加一萬 ib_add3.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money3 = Integer.parseInt(tv_money3.getText().toString()); String str_money3 = String.valueOf(money3+1); tv_money3.setText(str_money3); SQLite_record3(str_money3); show_coin3(money3+1); calculator_total(); } }); //加一萬 ib_add4.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money4 = Integer.parseInt(tv_money4.getText().toString()); String str_money4 = String.valueOf(money4+1); tv_money4.setText(str_money4); SQLite_record4(str_money4); show_coin4(money4+1); calculator_total(); } }); //減一萬 ib_del1.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money1 = Integer.parseInt(tv_money1.getText().toString()); if(money1-1<0) { Toast.makeText(context, "不要負債喔", Toast.LENGTH_SHORT).show(); } else { String str_money1 = String.valueOf(money1-1); tv_money1.setText(str_money1); SQLite_record1(str_money1); show_coin1(money1-1); calculator_total(); } } }); //減一萬 ib_del2.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money2 = Integer.parseInt(tv_money2.getText().toString()); if(money2-1<0) { Toast.makeText(context, "不要負債喔", Toast.LENGTH_SHORT).show(); } else { String str_money2 = String.valueOf(money2-1); tv_money2.setText(str_money2); SQLite_record2(str_money2); show_coin2(money2-1); calculator_total(); } } }); //減一萬 ib_del3.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money3 = Integer.parseInt(tv_money3.getText().toString()); if(money3-1<0) { Toast.makeText(context, "不要負債喔", Toast.LENGTH_SHORT).show(); } else { String str_money3 = String.valueOf(money3-1); tv_money3.setText(str_money3); SQLite_record3(str_money3); show_coin3(money3-1); calculator_total(); } } }); //減一萬 ib_del4.setOnClickListener(new ImageButton.OnClickListener() { public void onClick(View v) { int money4 = Integer.parseInt(tv_money4.getText().toString()); if(money4-1<0) { Toast.makeText(context, "不要負債喔", Toast.LENGTH_SHORT).show(); } else { String str_money4 = String.valueOf(money4-1); tv_money4.setText(str_money4); SQLite_record4(str_money4); show_coin4(money4-1); calculator_total(); } } }); } /* * 第一次啟動此AP時, 所有數據的初始值 */ public void SQLite_init() { String[] updateFields1 = {"fund_money1", "fund_money2", "fund_money3", "fund_money4"}; String[] updateValues1 = {"0","0","0","0"}; Cursor c1 = dbHelper.select(tables[0], null, null, null, null, null, null); c1.moveToFirst(); if (c1.getCount() < 4) { dbHelper.insert(tables[0], updateFields1, updateValues1); } c1.close(); String[] updateFields2 = {"fund_item1", "fund_item2", "fund_item3", "fund_item4"}; String[] updateValues2 = {"遊學基金", "結婚基金", "買房基金", "養老基金"}; Cursor c2 = dbHelper.select(tables[1], null, null, null, null, null, null); c2.moveToFirst(); if (c2.getCount() < 4) { dbHelper.insert(tables[1], updateFields2, updateValues2); } c2.close(); }
沒有留言:
張貼留言