日付をクリックすると、その日のメモ帳を呼び出す。
******************** ListMain.java ********************
package jp.lesson.study10;
import java.text.ParseException;
import java.text.SimpleDateFormat;import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import android.annotation.SuppressLint;
import android.app.ListActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListMain extends ListActivity {
@SuppressLint("ParserError")
@Overrideprotected void onCreate(Bundle savedInstanceState) {
// TODO 自動生成されたメソッド・スタブ
super.onCreate(savedInstanceState);
setContentView(R.layout.listmain);
// 日付の一覧を元にArrayAdapterを生成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, selectDays());
// ArrayAdapterをリストに設定
getListView().setAdapter(adapter);
}
/*
* 今月の日付の一覧をリストにして返却
*/
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// 選択したアイテムから日付を取得
String date = (String) l.getAdapter().getItem(position);
try {
Date dtime = Defines.sFmt.parse(date);
// MemoActivityを呼び出すIntentを生成
Intent intent = new Intent(this, MemoActivity.class);
// パラメータに選択した日付を設定
intent.putExtra(Defines.KEY_DATE, dtime.getTime());
// Intent呼び出しを実行
startActivity(intent);
} catch (ParseException e) {
}
}
private ArrayList<String> selectDays() {
ArrayList<String> ret = new ArrayList<String>();// 日付を整形出力するためのフォーマッターを生成
SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd (E)");
// 今日のカレンダー取得
Calendar cal = Calendar.getInstance();
// つきの最大日数分繰り返す
int maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for ( int i = 0; i < maxday; i++) {
cal.set(Calendar.DAY_OF_MONTH, i + 1);
// 整形した日付の文字列をリストに追加
String datestr = fmt.format(cal.getTime());
ret.add(datestr);
}
return ret;
}
}
******************** MemoActivity.java ********************
package jp.lesson.study10;
import android.app.Activity;
import android.app.AlertDialog;import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MemoActivity extends Activity {
// Loggerのタグprivate static final String TAG = "Chapter04";
// SharedPreferencesのインスタンス
private SharedPreferences mPrefs;
// パラメータで受け取った日付
private long mDate = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
// SharedPreferencesのインスタンスを取得
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);// Intentから日付を取得
Intent intent = getIntent();
if (intent != null) {
if (intent.hasExtra(Defines.KEY_DATE)) {
mDate = intent.getLongExtra(Defines.KEY_DATE, 0);
}
}
// SharedPreferencesから"content"の値を取得
String content = mPrefs.getString(getKey(mDate), "");
// 今日のカレンダーを取得
// Calendar cal = Calendar.getInstance();
// 今日の日付を文字列に変換
String date = Defines.sFmt.format(mDate);
TextView txtsubject = (TextView) findViewById(R.id.textView1);
EditText txtcontent = (EditText) findViewById(R.id.editText1);
txtsubject.setText(date);
txtcontent.setText(content);
}
/*
* 設定ファイルから値を取得するキーを生成
*
* @param value
* @return
*/
private String getKey(long value) {
return "key." + value;
}
public void onClickButton(View view) {
switch(view.getId()){
case R.id.button1:{
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle(getString(R.string.lbSaveTitle));
dlg.setPositiveButton(getString(R.string.lbYes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO 自動生成されたメソッド・スタブ
// 保存処理
EditText txtcontent = (EditText) findViewById(R.id.editText1);
String content = txtcontent.getText().toString();
// 保存されたデータを確認
Log.d(TAG, "content=" + content);
// Editorのインスタンスを取得
Editor editor = mPrefs.edit();
// "content"に入力された文字列を設定
editor.putString(getKey(mDate), content);
// 設定を反映する
editor.commit();
finish();
}
});
dlg.setNegativeButton(getString(R.string.lbNo),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO 自動生成されたメソッド・スタブ
// キャンセル
}
});
dlg.show();
}break;
case R.id.button2:{
finish();
}break;
}
}
}
******************** Defines.java ********************
package jp.lesson.study10;
import java.text.SimpleDateFormat;
public interface Defines {
// 日付を取得するキーpublic static final String KEY_DATE = "date";
// メモ帳のサブジェクトを取得する際のキー
public static final String KEY_SUBJECT = "subject";
// メモ帳の内容を取得する際のキー
public static final String KEY_CONTENT = "content";
// 日付を整形出力するためのフォーマッター
public static SimpleDateFormat sFmt = new SimpleDateFormat("yyyy/MM/dd (E)");
}
<?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="wrap_content" >
<ListView
android:id="@+id/android:list"
android:entries="@array/sampledata"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
<LinearLayout
android:id="@+id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:text="empty list"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
******************** strings.xml ********************
<resources><string name="app_name">Study10</string>
<string name="hello_world">hello</string>
<string name="menu_settings">menu</string>
<string name="title_activity_main">MainActivity</string>
<string name="title_memo">MemoActivity</string>
<string name="lbSave">保存</string>
<string name="lbCancel">キャンセル</string>
<string name="lbSaveTitle">保存確認</string>
<string name="lbYes">はい</string>
<string name="lbNo">いいえ</string>
</resources>
******************** AndroidManifest.xml ********************
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="jp.lesson.study10"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MemoActivity"
android:label="@string/title_memo">
</activity>
<activity
android:name=".ListMain"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
0 件のコメント:
コメントを投稿