日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android+notepad教程,Android平台应用开发实例:Notepad

發(fā)布時(shí)間:2025/5/22 Android 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+notepad教程,Android平台应用开发实例:Notepad 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在這個(gè)教程中將會(huì)建立一個(gè)簡(jiǎn)單列表界面,允許用戶添加刪除,但是不能編輯。包括如下的內(nèi)容:

◆ListActivities的基礎(chǔ)知識(shí)和如何建立菜單項(xiàng)。

◆如何使用SQLite 數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù)。

◆如何使用ArrayAdapter綁定數(shù)據(jù)到ListView (最簡(jiǎn)單的一種方式)。

◆最基本的Layout,包括如何顯示一個(gè)ListView,如何向一個(gè)菜單插入菜單項(xiàng)以及如何響應(yīng)菜單

第一步 建立工程

使用Eclipse建立一個(gè)工程N(yùn)otepad

第二步 如何使用Sqlite數(shù)據(jù)庫(kù)

和系統(tǒng)相關(guān)的接口調(diào)用都要用到Context類。

1打開數(shù)據(jù)庫(kù)

代碼片段:

public DBHelper(Context ctx) {

try {

//打開已經(jīng)存在的數(shù)據(jù)庫(kù)

db = ctx.openDatabase(DATABASE_NAME, null);

} catch (FileNotFoundException e) {

try {

//建立新的數(shù)據(jù)庫(kù)

db =

ctx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0, null);

//建立數(shù)據(jù)表

db.execSQL(DATABASE_CREATE);

} catch (FileNotFoundException e1) {

db = null;

}

}

}

Context類的openDatabase可以打開一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在,將會(huì)拋出FileNotFoundException異常。可以通過(guò)Context類的createDatabase函數(shù)建立一個(gè)新的數(shù)據(jù)庫(kù)。通過(guò)調(diào)用SQLiteDatabase 的execSQL方法,執(zhí)行一條SQL語(yǔ)句建立一個(gè)新的數(shù)據(jù)表。

2.獲取表中的數(shù)據(jù)

代碼如下:

public List﹤Row﹥ fetchAllRows() {

ArrayList﹤Row﹥ ret = new ArrayList﹤Row﹥();

try {

Cursor c =

db.query(DATABASE_TABLE, new String[] {

"rowid", "title", "body"}, null, null, null, null, null);

int numRows = c.count();

c.first();

for (int i = 0; i ﹤ numRows; ++i) {

Row row = new Row();

row.rowId = c.getLong(0);

row.title = c.getString(1);

row.body = c.getString(2);

ret.add(row);

c.next();

}

} catch (SQLException e) {

Log.e("booga", e.toString());

}

return ret;

}

建立一個(gè)游標(biāo)類Cursor 通過(guò)SQLiteDatabase 的query方法查詢一個(gè)表格。有了Cursor就可以遍歷所有的記錄了。

3添加新的記錄

public void createRow(String title, String body) {

ContentValues initialValues = new ContentValues();

initialValues.put("title", title);

initialValues.put("body", body);

db.insert(DATABASE_TABLE, null, initialValues);

}

構(gòu)造一個(gè)ContentValues類,通過(guò)調(diào)用put方法,可以設(shè)置一條記錄的屬性。通過(guò)調(diào)用SQLiteDatabase的insert方法添加一條新的記錄。

4 刪除記錄

public void deleteRow(String str)

{

db.delete(DATABASE_TABLE, "title=\'" + str+"\'", null);

}

直接調(diào)用SQLiteDatabase的delete方法,第二個(gè)參數(shù)是一個(gè)SQL條件表達(dá)式。

第三步 顯示方式和界面

大部分的界面都有一個(gè)Layout。我們的界面是顯示在整個(gè)屏幕中的List。還有其他的顯示方式,比如懸浮的窗口(Dialog,Alert)。

打開main.xml文件。

這是一個(gè)定義界面顯示風(fēng)格的資源文件。

a. 所有的界面資源文件都從這樣的一行開始: ﹤?xml version="1.0" encoding="utf-8"?﹥.

b. 一般的類型定義都是LinearLayout (并不是總是)

c. 關(guān)于XML的名稱空間的定義,總是下面一行:

xmlns:android="http://schemas.android.com/apk/res/android"

第四步 編輯notepad_list.xml文件

最終如下所示:

﹤?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 "﹥

﹤ListView id="@id/android:list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/﹥

﹤TextView id="@id/android:empty"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/no_notes"/﹥

﹤/LinearLayout﹥

a. ListView和TextView只能顯示一個(gè),正常情況下,ListView會(huì)被顯示出來(lái),當(dāng)沒(méi)有任何一個(gè)數(shù)據(jù)的時(shí)候?qū)?huì)顯示一個(gè)TextView ,顯示出 "還沒(méi)有建立任何數(shù)據(jù)!" ,字符串資源將被定義在資源文件中。

b. 在 ListView 和 TextView中的帶@符號(hào)的字符串表示,XML解析器將會(huì)分析出后面的數(shù)據(jù)是一個(gè)資源ID。

c. 通過(guò)更改資源文件,在R.java文件中的代碼會(huì)反應(yīng)出來(lái)。在代碼中使用的資源都要通過(guò)R.java中的常量進(jìn)行索引

第五步 定義一個(gè)顯示列表項(xiàng)風(fēng)格的配置文件

在res/layout目錄現(xiàn)建立一個(gè)新的文件notes_row.xml.

添加如下的代碼:

﹤?xml version="1.0" encoding="utf-8"?﹥

﹤TextView id="@+id/text1"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/﹥

第六步

把Notepad 的父類從 Activity 改為 ListActivity:

public class Notepad extends ListActivity

注意: 必須導(dǎo)入ListActivity,在 Eclipse下可以使用, ctrl-shift-O

第七步

有三個(gè)方法: onCreate, onCreateOptionsMenu 和 onOptionsItemSelected, 需要我們填充:

onCreate()當(dāng)一個(gè)界面開始顯示的時(shí)候會(huì)被調(diào)用,相當(dāng)于一個(gè)界面的主函數(shù)。在這里可以初始化資源和狀態(tài)。

onCreateOptionsMenu() 被用來(lái)建立一個(gè)界面的菜單。當(dāng)用戶點(diǎn)擊菜單鍵的時(shí)候?qū)?huì)顯示出來(lái)。

onOptionsItemSelected()當(dāng)用選擇菜單的時(shí)候?qū)?huì)被調(diào)用。

第八步

填充onCreate() 方法。

在這里可以設(shè)置界面標(biāo)題,初始化DBHelper對(duì)象管理數(shù)據(jù)。填充List列表。

a. 調(diào)用super()傳入?yún)?shù)icicle

b. setContentView to R.layout.notepad_list

c. 定義另外一個(gè)類dbHelper

d. 初始化DBHelper類。

e. 最后調(diào)用方法-fillData()-

f. onCreate()方法如下所示:

@Override

public void onCreate(Bundle icicle)

{

super.onCreate(icicle);

setContentView(R.layout.notepad_list);

dbHelper = new DBHelper(this);

fillData();

}

添加私有的屬性DBHelper

private DBHelper dbHelper;

第九步填充onCreateOptionsMenu() 方法.

在strings.xml文件中定義字符串資源。 a. 在strings.xml 文件中添加一個(gè)字符串資源

﹤string name="menu_insert"﹥添加﹤/string﹥,

﹤string name="menu_delete"﹥刪除﹤/string﹥,

這些在String.xml文件中定義的資源,保存文件后,在R.java中會(huì)出先相應(yīng)的資源ID。

定義一個(gè)菜單ID 在NotePad.java 中。

public static final int INSERT_ID = Menu.FIRST;

public static final int DELETE_ID = Menu.FIRST +1;

b. 在onCreateOptionsMenu() 中添加菜單項(xiàng),返回父類法方法onCreateOptionsMenu的返回值.。代碼如下所示:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

menu.add(0, INSERT_ID, R.string.menu_insert);

menu.add(0, DELETE_ID, R.string.menu_delete);

return result;

}Menu.Add(num1,menuid,string)

其中num1是一個(gè)可以為菜單項(xiàng)排序的基數(shù),所有一樣基數(shù)的菜單項(xiàng)按照加入的順序排序,基數(shù)相同的菜單項(xiàng)排列在一起,基數(shù)按照從小到大的順序從上到下排列菜單項(xiàng)。Menuid是唯一一個(gè)菜單項(xiàng)的標(biāo)識(shí)。當(dāng)菜單項(xiàng)被用戶選擇的時(shí)候,這個(gè)標(biāo)識(shí)就會(huì)在onOptionsItemSelected()方法的參數(shù)中出現(xiàn)。

第十步

填充onOptionsItemSelected() 方法:

當(dāng)用戶選擇菜單以后,onOptionsItemSelected()方法將會(huì)被調(diào)用。通過(guò)調(diào)用item.getId()方法可以得到選擇的菜單的ID進(jìn)而區(qū)別不同的菜單。 The super.onOptionsItemSelected(item) 返回父類的onOptionsItemSelected()方法;

@Override

public boolean onOptionsItemSelected(Item item) {

switch (item.getId()) {

case INSERT_ID:

createNote();

break;

}

return super.onOptionsItemSelected(item);

}

【編輯推薦】

【責(zé)任編輯:楊賽 TEL:(010)68476606】

點(diǎn)贊 0

總結(jié)

以上是生活随笔為你收集整理的android+notepad教程,Android平台应用开发实例:Notepad的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。