ようへい

2012年6月7日木曜日

Notepad Tutorial (Exercise 1) ①

ステップ 1が済んでいない方はNotepad Tutorial (準備編) - ログろいどを参照し済ませておいてください。

ステップ 2

NotesDbAdapter.javaを参照します。
このクラスは、データベースへのアクセスを行うクラスのようです。
NotesDbAdapter のコンストラクタでは、コンテキストを受け取ります。
ActivityクラスはContextクラスを実装しているので、Activityから呼び出す際には、thisを渡してインスタンスを作成します。
open メソッドは、DatabaseHelperのインスタンスを作成し、getWritableDatabaseで書き込み用にデータベースをオープンします。
close メソッドは、データベースを閉じ、リソースの解放を行います。
createNote メソッドは、ノートのタイトルと、本文の文字列を受け取り、データベースにレコードを追加します。
deleteNote メソッドは、rawIdを受け、そのIDを持つレコードを削除します。
fetchAllNotes メソッドは、notesテーブルの全レコードをCursorインタフェースで取得します。
fetchNote メソッドは、rawIdを受け、そのIDを持つレコードをCursorインタフェースで返します。
updateNote メソッドは、rawIdで受けたレコードの、タイトル、本文を更新します。

ステップ 3

res/layout/notepad_list.xmlを開きます。
<?xml version="1.0" encoding="utf-8"?>は、Androidのレイアウトファイルの定型文です。
今回の場合、その次の行は、レイアウト定義になっています。
レイアウト定義には、Androidの名前空間(xmlns:android="http://schemas.android.com/apk/res/android")が指定されている必要があります。
これが指定されることで、android:hoge が使用できます。

ステップ 4

リストを保持するレイアウトを作成します。
res/layout/notepad_list.xmlを開き、LinearLayout 要素を以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

  <ListView android:id="@android:id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
  <TextView android:id="@android:id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_notes"/>

</LinearLayout>
ListView と TextView タグのid文字列にある@シンボルは、XMLパーサが解析し、id文字列の後ろの部分を展開し、IDリソースを使用するということを意味します。
@android:idで始まる場合は、Android OSのリソースIDを指します。
@+idで始まる場合は、自分のプロジェクト内のリソースIDを参照している事を意味します。
また、これらのidを見ても分かるように、ListViewはノートが存在する場合に表示され、TextViewはノートが存在しない場合に表示されます。
TextViewのtextに指定されている文字列は、文字列を定義したリソース(res/values/strings.xml)の、name属性と紐付いています。
次回続きます。
関連記事
関連記事

0 件のコメント:

コメントを投稿