android程式設計實例入門 -Sample改寫分享 (2014/11/10)
android程式設計實例入門 -Sample改寫分享 (2014/11/10)
此範例為程式碼(10\Sample03)的改寫,建立一個ListView來實作GUI,利用SQLiteDatabase元件實作SQLite資料庫建立/查詢/關閉功能,程式碼如下所示:
package com.jashsample;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.ContactsContract;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Camera;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.hardware.Camera.Size;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.speech.RecognizerIntent;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.text.format.DateFormat;
import android.text.method.KeyListener;
import android.view.Display;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;
/*
* 建立ListView,利用SQLiteDatabase元件實作SQLite資料庫建立/查詢/關閉功能。
*/
/*
* <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
*/
public class MainActivity extends Activity {
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
setContentView(ll);
ListView lv = new ListView(this);
String str = "data/data/" + getPackageName() + "/Sample.db";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(str, null);
String qry0 = "DROP TABLE IF EXISTS product";
String qry1 = "CREATE TABLE product" +
"(id INTEGER PRIMARY KEY, name STRING, price INTEGER)";
String[] qry2 ={"INSERT INTO product(name, price) VALUES ('鉛筆', 80)",
"INSERT INTO product(name, price) VALUES ('橡皮擦', 50)",
"INSERT INTO product(name, price) VALUES ('圓規', 200)",
"INSERT INTO product(name, price) VALUES ('指南針', 300)",
"INSERT INTO product(name, price) VALUES ('原子筆', 100)"};
String qry3 = "SELECT * FROM product";
db.execSQL(qry0);
db.execSQL(qry1);
for(int i=0; i<qry2.length; i++)
{
db.execSQL(qry2[i]);
}
Cursor cr = db.rawQuery(qry3, null);
startManagingCursor(cr);
ArrayAdapter<String> ad = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1);
while(cr.moveToNext())
{
int i = cr.getColumnIndex("id");
int n = cr.getColumnIndex("name");
int p = cr.getColumnIndex("price");
int id = cr.getInt(i);
String name = cr.getString(n);
int price = cr.getInt(p);
String row = id + "------" + name + "~" + price + "元";
ad.add(row);
}
lv.setAdapter(ad);
ll.addView(lv);
db.close();
}
}