歡迎界面
登錄後的主界面,自動查詢數據庫並加載顯示數據到ListView中
添加數據
長按刪除
menu按鈕排序
按ID逆序排列的界面
html
xml佈局寫的不是很好,若您有更好的佈局方式,請回復一下,讓我也學習學習哈,一同進步。。。。
第一次寫這麼多的代碼,發帖不易,請不要讓此貼沉下去哈,回覆還有下載豆豆拿。。。
歡迎界面的java代碼 StartLuncher.javajava
[mw_shl_code=java,true]package wj.sqlitedemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class StartLuncher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myluncher);
luncherStart();
}
public void luncherStart(){
new Thread(){
public void run(){
try{
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent intent = new Intent();
intent.setClass(StartLuncher.this,MainActivity.class);
startActivity(intent);
finish();
}
}.start();
}
}
[/mw_shl_code]android
歡迎界面的XML代碼 myluncher.xml
[mw_shl_code=xhtml,true]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/login" >
</LinearLayout>[/mw_shl_code]git
AndroidManifest.xml
[mw_shl_code=xhtml,true]<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="wj.sqlitedemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".StartLuncher"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AddUser" android:label="@string/addUser"></activity>
<activity android:name="MainActivity" ></activity>
</application>
</manifest>[/mw_shl_code]
sql
MainActivity.java 比較長,耐心看完哈,確定會有收貨的,我學的不咋地,可是我寫的我能看懂,你也必定能看懂。。。
[mw_shl_code=java,true]package wj.sqlitedemo;
import java.util.Timer;
import java.util.TimerTask;
import android.R.drawable;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint({ "ParserError", "ParserError", "ParserError", "ParserError",
"ParserError", "ParserError", "ParserError" })
public class MainActivity extends ListActivity {
// 數據表名稱
private static final String TABLE_NAME = "data";
// 定義幫助類
private MyDatabaseHepler dbHelper;
// 定義數據庫類
private SQLiteDatabase db;
private static final String NAME = "name";
private static final String AGE = "age";
SimpleAdapter adapter;
Button addButton;
EditText et_name;
EditText et_age;
TextView textView;
ListView list;
TextView tv_id;
TextView tv_age;
TextView tv_name;
Button button1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
// 實例化幫助類
dbHelper = new MyDatabaseHepler(getApplicationContext());
// 建立數據庫
db = dbHelper.getWritableDatabase();
// 實例化幫助類
dbHelper = new MyDatabaseHepler(getApplicationContext());
// 建立數據庫
db = dbHelper.getWritableDatabase();
// 取出組件
list = (ListView) findViewById(android.R.id.list);
// list=getListView(); 調用系統的list,和上邊的同樣
// 設置監聽
// list.setOnItemClickListener(new MyOnItemClickListener());
// 註冊ListView上下文菜單
this.registerForContextMenu(list);
list.setOnCreateContextMenuListener(this);
// 初始化,調用填充方法填充ListView
this.queryData();
addButton = (Button) findViewById(R.id.plus);
// add 功能實現
addButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater = getLayoutInflater();
final View layout = inflater.inflate(R.layout.dialog,
(ViewGroup) findViewById(R.id.dialog));
new AlertDialog.Builder(MainActivity.this)
.setTitle("增長信息")
.setView(layout)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
et_name = (EditText) layout .findViewById(R.id.et_name);
et_age = (EditText) layout .findViewById(R.id.et_age);
// 取出值
String e_name = et_name.getText().toString();
String e_age = et_age.getText() .toString();
ContentValues cv = new ContentValues();
cv.put(NAME, e_name);
cv.put(AGE, e_age);
db.insert(TABLE_NAME, null, cv);
queryData();
}
})
.setNegativeButton("Cancle",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
});
}
// 查詢,填充ListView
public void queryData() {
// 遊標
Cursor cursor = db
.query(TABLE_NAME, null, null, null, null, null, null);
// 啓動管理遊標
this.startManagingCursor(cursor);
// 遊標適配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.userinfo, cursor, new String[] {
"_id", "name", "age" }, new int[] { R.id.id, R.id.name,
R.id.age });
System.out.println(adapter.getCount());
// 設置適配器
setListAdapter(adapter);
//下邊這句話,我不知道應不該該加,若你知道,麻煩回覆一下其功能用法,告知我,好麼?
adapter.notifyDataSetChanged();
}
// 排序查詢
// public Cursor query (String table, String[] columns, String selection,
//String[] selectionArgs, String groupBy, String having, String orderBy)
public void queryOrder() {
// 遊標
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null,
"_id desc");
// 啓動管理遊標
this.startManagingCursor(cursor);
// 遊標適配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.userinfo, cursor, new String[] {
"_id", "name", "age" }, new int[] { R.id.id, R.id.name,
R.id.age });
System.out.println(adapter.getCount());
// 設置適配器
setListAdapter(adapter);
}
// menu按鈕 按默認排序
public void queryByIdAsc() {
// 遊標
Cursor cursor = db
.query(TABLE_NAME, null, null, null, null, null, null);
// 啓動管理遊標
this.startManagingCursor(cursor);
// 遊標適配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.userinfo, cursor, new String[] {
"_id", "name", "age" }, new int[] { R.id.id, R.id.name,
R.id.age });
System.out.println(adapter.getCount());
// 設置適配器
setListAdapter(adapter);
}
//
// 刪除
public void deleteData(final long id) {
System.out.println(".........");
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("刪除內容").setMessage("肯定刪除嗎?")
.setIcon(R.drawable.home_trash)
.setPositiveButton("肯定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 刪除數據
db.delete(TABLE_NAME, "_id=?",
new String[] { String.valueOf(id) });
// 顯示數據
queryData();
}
}).setNegativeButton("取消", null).create();
builder.show();
}
//上下文菜單
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("信息操做").setHeaderIcon(R.drawable.ic_launcher);
menu.add(0, 1, 0, "刪除");
super.onCreateContextMenu(menu, v, menuInfo);
}
//上下文菜單選擇
@Override
public boolean onContextItemSelected(MenuItem item) {
// 取得選項信息
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item
.getMenuInfo();
// 傳遞ID
this.deleteData(menuInfo.id);
return super.onContextItemSelected(item);
}
//選項菜單選擇
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.main, menu);
menu.add(0, 1, 1, "按ID排序");
menu.add(0, 2, 2, "按默認排序");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
// 此處添加按年齡
queryOrder();
Toast.makeText(this, "id order", Toast.LENGTH_LONG).show();
break;
case 2:
// 此處添加按默認排序
queryByIdAsc();
Toast.makeText(this, "默認排序", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
// 雙擊返回鍵退出程序
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exitBy2Click();// 調用雙擊退出函數
}
return false;
}
// 準備退出
private static Boolean isExit = false;
private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true; // 準備退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2000); // 若是2秒鐘內沒有按下返回鍵,則啓動定時器取消掉剛纔執行的任務
} else {
finish();
System.exit(0);
}
}
}
[/mw_shl_code]數據庫
MyDatabaseHelper.java 數據庫類
[mw_shl_code=java,true]package wj.sqlitedemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHepler extends SQLiteOpenHelper
{
// 數據庫名稱
private static final String DB_NAME = "notepad.db";
// 數據表名稱
private static final String TABLE_NAME = "data";
// 數據庫版本
private static final int DB_VERSION = 1;
// 建立數據表SQL語句
private static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME
+ "("
+ "_id INTEGER PRIMARY KEY ,"
+ "name VARCHAR(50) NOT NULL ,"
+ "age"
+ ")";
// 刪除數據表SQL語句
private static final String DROP_TABLE = "DROP IF TABLE EXISTS "
+ TABLE_NAME;
public MyDatabaseHepler(Context context)
{
super(context, DB_NAME, null, DB_VERSION);
System.out.println("--------------------數據庫建立成功!!");
}
@Override
public void onCreate(SQLiteDatabase db)
{
// 建立數據表
db.execSQL(CREATE_TABLE);
System.out.println("------------------------數據表建立成功!!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL(DROP_TABLE);
System.out.println("-------------------------數據表更新成功!!");
onCreate(db);
}
}
[/mw_shl_code]app
AddUser.java 添加數據
[mw_shl_code=java,true]package wj.sqlitedemo;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
@SuppressLint("ParserError")
public class AddUser extends Activity {
// 數據表名稱
private static final String TABLE_NAME = "data";
// 定義組件
private EditText et_name;
private EditText et_age;
private Button btnSave;
// 定義數據庫對象
private MyDatabaseHepler dbHelper;
private SQLiteDatabase db;
private String e_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
// 實例化數據庫對象
dbHelper = new MyDatabaseHepler(getApplicationContext());
db = dbHelper.getWritableDatabase();
// 取得組件
et_name = (EditText) findViewById(R.id.et_name);
et_age = (EditText) findViewById(R.id.et_age);
// 獲取傳遞過來的值
Intent intent = getIntent();
// 保存值
e_id = intent.getStringExtra("id");
String mTitle = intent.getStringExtra("name");
String mBody = intent.getStringExtra("age");
// 顯示值
et_name.setText(mTitle);
et_age.setText(mBody);
btnSave.setOnClickListener(new MyOnClickListener());
}
/**
* 保存按鈕監聽方法
*/
public class MyOnClickListener implements OnClickListener {
@Override
public void onClick(View view) {
// 取出值
String mTitle = et_name.getText().toString();
String mBody = et_age.getText().toString();
// 定義ContentValues
ContentValues cValues = new ContentValues();
cValues.put("title", mTitle);
cValues.put("body", mBody);
// 調用方法
savaData(cValues, e_id);
// 返回
setResult(RESULT_OK);
finish();
}
}
/**
* 保存方法
*/
public void savaData(ContentValues values, String id) {
// 若是數據表中的id爲空
if (id == null) {
db.insert(TABLE_NAME, null, values);
db.close();
} else {
db.update(TABLE_NAME, values, "_id=?",
new String[] { String.valueOf(id) });
db.close();
}
}
}
[/mw_shl_code]ide
Layout_Main.xml 主佈局,寫的有點亂,請諒解哈,假如您有更好的 listView數據列表的佈局方式,請麻煩您回覆一下,一同進步哈
[mw_shl_code=java,true]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayout0"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:background="@drawable/topmenu_bg"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/plus"
android:layout_width="50dip"
android:layout_height="30dip"
android:layout_centerHorizontal="true"
android:background="@drawable/addxml" />
</RelativeLayout>
<TableLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1"
>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/id"
android:text="@string/id"
android:textSize="15pt"
android:textColor="#00BFFF"/>
<TextView
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/name"
android:text="@string/name"
android:textSize="15pt"
android:textColor="#00BFFF"/>
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/age"
android:textColor="#00BFFF"
android:textSize="15pt" />
</TableRow>
</TableLayout>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:divider="#D4D4D4"
android:dividerHeight="1dp"
android:scrollbars="vertical" >
</ListView>
</LinearLayout>[/mw_shl_code]函數
userinfo.xml LsitView列表元素
[mw_shl_code=java,true]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView android:id="@+id/id"
android:gravity="left"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:singleLine="true"
android:paddingLeft="5dip"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:textSize="10pt"
/>
/>
<TextView android:id="@+id/name"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:singleLine="true"
android:paddingLeft="5dip"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:textSize="10pt"
/>
<TextView android:id="@+id/age"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:gravity="right"
android:singleLine="true"
android:paddingLeft="5dip"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:textSize="10pt"
/>
</LinearLayout>[/mw_shl_code]佈局
dialog.xml 就是添加按鈕點擊後的彈出輸入框
[mw_shl_code=xhtml,true]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog"
android:layout_width="250dip"
android:layout_height="200dip"
android:background="#87CEFA"
android:gravity="center|center_horizontal"
android:layout_gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name1" />
<EditText
android:id="@+id/et_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="100dip" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/age1" />
<EditText
android:id="@+id/et_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:digits="0123456789"
android:minWidth="100dip" />
</LinearLayout>
</LinearLayout>[/mw_shl_code]
【轉載】http://www.apkbus.com/android-64756-1-1.html