SQLite講座3の続き。
今回の講座でNotepad Exercise 2が完了です!
[ad#336×280]
Step7: ノートの編集用のレイアウトを眺めよう
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" /> <EditText android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/body" /> <EditText android:id="@+id/body" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:scrollbars="vertical" /> <Button android:id="@+id/confirm" android:text="@string/confirm" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
layout_weightは幅をどこくらいの大きさにするかを割合で決めます。
デフォルトが0で、0の場合は最小限の大きさを表示します。
horizontalで、TextViewが0でEditTextが1なので
TextViewの幅を最小限にして、残りの幅は全てEditTextを表示すると。
もし1と2だったら、1対2の割合の幅で表示されます。
Step8: ノートの編集用のクラスを作る
新しいクラスの作り方
com.android.demo.notepad2 packageのところを右クリックして、New -> Class
NameのところにNoteEditを入力
Superclassのところにandroid.app.Activityを入力してFinish
現れたNoteEdit classのところで、右クリックしてSource -> Override/implement Methods
スクロールダウンして、onCreate(Bundle)をチェックしてOK。
onCreate(Bundle)メソッドがNoteEdit Classに自動的に追加されます。
package com.android.demo.notepad2; import android.app.Activity; import android.os.Bundle; public class NoteEdit extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } }
Step9: NoteEdit ClassのonCreateにいろいろ追加
レイアウトを設定して、インテントからもらったtitleとbodyをレイアウトの部品に当てはめて、確認ボタンの設定をします。
やること!
レイアウトの設定
setContentView(R.layout.note_edit);
Activityのタイトルを変更
setTitle(R.string.edit_note);
EditTextとBUttonの部品をレイアウトから探す
mTitleText = (EditText) findViewById(R.id.title);
mBodyText = (EditText) findViewById(R.id.body);
Button confirmButton = (Button) findViewById(R.id.confirm);
mTitleTextとmBodyTextはクラスメンバーでクラスの最初のところに定義する
クラスの最初に、Long mRowIdをプライペートメンバーとして定義して、現在編集しているNoteのidを保存しておく。
インテントからtitleとbodyを受け取って、レイアウトの部品に当て込む
confirmButtonにリスナーを設定する
で、全部あわせると下記のコードになるっと。
package com.android.demo.notepad2; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class NoteEdit extends Activity { private EditText mTitleText; private EditText mBodyText; private Long mRowId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.note_edit); setTitle(R.string.edit_note); mTitleText = (EditText) findViewById(R.id.title); mBodyText = (EditText) findViewById(R.id.body); Button confirmButton = (Button) findViewById(R.id.confirm); mRowId = null; Bundle extras = getIntent().getExtras(); if (extras != null) { String title = extras.getString(NotesDbAdapter.KEY_TITLE); String body = extras.getString(NotesDbAdapter.KEY_BODY); mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID); if (title != null) { mTitleText.setText(title); } if (body != null) { mBodyText.setText(body); } } confirmButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 次のステップでやるよ! } }); } }
Step10: Buttonにリスナーを設定する
そもそもリスナーとは何なのかというと、ボタンをクリックしたときに、
ボタンがクリックされたよー、と知らせてくれて、それをきっかけに何かしてくれるやつです。
今回は編集が終わったよというのを知らせるリスナーをボタンに設定します。
全体的な流れは、
ボタンがタップされたら、リスナーでキャッチして、
まずバンドルを作ってそこにtitleとbodyとノートの場所を設定して、
そのあと、インテントを作ってそのバンドルを渡してあげて、
そのインテントをsetResultに設定して、Activityを終了するっと。
confirmButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle bundle = new Bundle(); bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString()); bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString()); if (mRowId != null) { bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId); } Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); finish(); } });
Step11: Activityをマニフェストに設定する
新しいActivity(NoteEdit)を作ったら、マニフェストに設定しないとAndroidが見つけることができません。
ということで、マニフェストに設定するやり方-。
直接エディタに書いてしまえばいいのですが、
なにやら別の楽なやりかたがあるらしいのでそれを試してみます。
AndroidManifest.xmlを開く
Applicationタブをクリック
Application NotesのところにあるAddをクリック
Activityをダブルクリック
Application Notesに新しくできたActivityをクリック
Attributes for ActivityのNameのところに.NoteEditを入力
以上です。
これでAndroidManifest.xmlに
<activity android:name=".NoteEdit" />
が追加されます。
Step12: さっそく実行しよう
ノートの新規作成、保存、リスト表示、編集、削除
全部できました!
今回のSQLite講座4はここまで。
SQLite講座も残すところExercise 3だけ。
がんばろー。
コメントを残す