ここまでの流れ
状態:学習中
閲覧数:971
投稿日:2014-01-20
更新日:2014-01-26
1.起動時、「レコード情報」オブジェクト生成
・ActivityTopクラス、onCreateメソッド → 「RecordItemクラス」のインスタンスオブジェクト生成
2.画面表示時、「バックグラウンド処理」オブジェクト生成
・ActivityTopクラス、onResumeメソッド → 「DataLoadTaskクラス」のインスタンスオブジェクト生成
3.バックグラウンド処理開始
・RecordDaoItemクラス、list_search_itemメソッド → 「ユーザー定義クラスRecordItemのオブジェクト」を格納するリストitemListを生成し、返す
・起動処理の流れ1
・ActivityTopクラス、onCreateメソッド → 「RecordItemクラス」のインスタンスオブジェクト生成
2.画面表示時、「バックグラウンド処理」オブジェクト生成
・ActivityTopクラス、onResumeメソッド → 「DataLoadTaskクラス」のインスタンスオブジェクト生成
3.バックグラウンド処理開始
・RecordDaoItemクラス、list_search_itemメソッド → 「ユーザー定義クラスRecordItemのオブジェクト」を格納するリストitemListを生成し、返す
・起動処理の流れ1
2.DataLoadTaskクラス … doInBackground()メソッドの残り
doInBackground()メソッド
doInBackground()メソッドの残り
RecordDaoItemクラスのlist_search_itemメソッド呼出
//バックグラウンドで実行させたい処理
@Override
protected List<RecordItem> doInBackground(Object... params) {
// 一覧を呼び出し
RecordDaoItem dao = new RecordDaoItem(ActivityTop.this); //インナークラス内で、新たなクラスのインスタンスオブジェクト生成
return dao.list_search_item( Record ,isWordSearch );
第1引数 … Record
・ActivityTopクラスのonCreateメソッドに記述
・RecordItemクラスのインスタンスオブジェクト
第2引数 … isWordSearch
・ActivityTopクラスのonCreateメソッドに記述
・起動時の1発目は日付で一覧を取得する為、falseに設定
3.RecordDaoItemクラス/list_search_itemメソッド … リストの流れ
検索メソッド
・RecordDaoItemクラスの検索メソッド「list_search_item」
//
// 検索
//
public List<RecordItem> list_search_item(RecordItem record, boolean searchWord ) { //第1引数。RecordItemクラスのインスタンスオブジェクト。第2引数。真偽値。日付で一覧を取得する場合はfalse
SQLiteDatabase db = helper.getReadableDatabase();
List<RecordItem> itemList;
String searchCulmn = null;
// 検索する条件を設定
String searchNikki = RecordItem.getItemSearchNikki();
String searchNen = RecordItem.getItemSearchNen();
String searchTuki = RecordItem.getItemSearchTuki();
String searchHi = RecordItem.getItemSearchHi();
if( searchWord == true ){
if( searchNikki.length() > 0 ){
searchCulmn = (RecordItem.COLUMN_ITEMNIKKI + " like '%" + searchNikki + "%' ").toString();
}
}
else{
if( searchHi == null ){
searchCulmn = RecordItem.COLUMN_ITEMNEN + " = '" + searchNen + "' AND " +
RecordItem.COLUMN_ITEMTUKI + " = '" + searchTuki + "' ";
}
else {
searchCulmn = RecordItem.COLUMN_ITEMNEN + " = '" + searchNen + "' AND " +
RecordItem.COLUMN_ITEMTUKI + " = '" + searchTuki + "' AND " +
RecordItem.COLUMN_ITEMHI + " = '" + searchHi + "' ";
}
}
// where句の条件を得たら検索
try {
String query = null;
query = "select * " +
" from " + RecordItem.TABLE_NAME_ITEM +
" where " + searchCulmn + ";";
Cursor cursor = db.rawQuery(query, null);
itemList = new ArrayList<RecordItem>();
0.パッケージ
必要パッケージを読み込む
・リストを使うには、ソースファイル最初の方に以下のimport文が必要
・完全限定名利用
import java.util.ArrayList;
import java.util.List;
1.リスト生成
・RecordDaoItemクラス内にある「検索をするlist_search_itemメソッド」の中で、クラス型オブジェクト(ユーザー定義クラスRecordItemのオブジェクト)を格納するリストitemListを生成
List<RecordItem> itemList;
itemList = new ArrayList<RecordItem>();
List<データ型> リストの名前 = new ArrayList<データ型>();
・リスト生成では、格納するデータ型とリストの名前を指定・サイズの指定は必須ではない
※List<データ型>の「List」は参照型(オブジェクト型)変数のインタフェース型(Listインターフェイス)を意味する
2.リストへデータを追加
2-1.リストの名前と追加するデータを指定
2-2.追加のたびに、データがリスト末尾に追加され、リストのサイズが1増える
リストの名前.add( データ );
・「検索をするlist_search_itemメソッド」の中で、リストitemListへデータを追加する
while( !cursor.isAfterLast()){
itemList.add( getItem( cursor ) );
cursor.moveToNext();
}
3.RecordDaoItemクラス/list_search_itemメソッド 詳細
SQLiteDatabase db = helper.getReadableDatabase();//SQLiteOpenHelperクラスのメソッド。SQLiteDatabaseオブジェクトを取得(読込み用にデータベースをオープン)
・検索する条件を設定
// 検索する条件を設定
// RecordItemクラスのゲッターメソッド利用
//
String searchNikki = RecordItem.getItemSearchNikki(); //服(検索キーワード)
String searchNen = RecordItem.getItemSearchNen(); //2014
String searchTuki = RecordItem.getItemSearchTuki(); //1
String searchHi = RecordItem.getItemSearchHi();
// where句の条件
if( searchWord == true ){ //itemnikki like '%服を% ※初回はfalse。
if( searchNikki.length() > 0 ){ //実体はRecordItemクラスのStringプロパティitemsearchnikki。デフォルトnull
searchCulmn = (RecordItem.COLUMN_ITEMNIKKI + " like '%" + searchNikki + "%' ").toString();
}
}
else{ //nen = '2014' AND tuki = '1' ;
if( searchHi == null ){ //実体はRecordItemクラスのStringプロパティitemsearchhi。デフォルトnull
searchCulmn = RecordItem.COLUMN_ITEMNEN + " = '" + searchNen + "' AND " +
RecordItem.COLUMN_ITEMTUKI + " = '" + searchTuki + "' ";
}
else {
searchCulmn = RecordItem.COLUMN_ITEMNEN + " = '" + searchNen + "' AND " +
RecordItem.COLUMN_ITEMTUKI + " = '" + searchTuki + "' AND " +
RecordItem.COLUMN_ITEMHI + " = '" + searchHi + "' ";
}
}
・where句の条件を得たら検索
・rawQueryメソッド
// where句の条件を得たら検索
try {
String query = null;
query = "select * " +
" from " + RecordItem.TABLE_NAME_ITEM +
" where " + searchCulmn + ";";
// "select * from tbl_androidstylesystem where nen = '2014' AND tuki = '1' ;"
// "select * from tbl_androidstylesystem where itemnikki like '%服を%' ;"
Cursor cursor = db.rawQuery(query, null);
・クラス型オブジェクト(ユーザー定義クラスRecordItemのオブジェクト)を格納するリストitemListを生成
itemList = new ArrayList<RecordItem>(); //クラス型オブジェクト(ユーザー定義クラスRecordItemのオブジェクト)を格納するリストitemListを生成
※上記参照
・cursorオブジェクトデバッグ
cursor SQLiteCursor (id=830060762464)
mClosed false
mColumnNameMap null
mColumns String[5] (id=830060762824)
[0] "_id" (id=830060762864)
[1] "itemnikki" (id=830060762928)
[2] "nen" (id=830060763000)
[3] "tuki" (id=830060763064)
[4] "hi" (id=830060763128)
mContentObservable ContentObservable (id=830060762632)
mContentResolver null
mCount -1
mCurrentRowID null
mCursorState 0
mDatabase SQLiteDatabase (id=830060758136)
mDataSetObservable DataSetObservable (id=830060762584)
mDriver SQLiteDirectCursorDriver (id=830060761768)
mEditTable null
mInitialRead 2147483647
mLock null
mMaxRead 2147483647
mNotificationHandler null
mNotifyUri null
mPendingData false
mPos -1
mQuery SQLiteQuery (id=830060762344)
mRowIdColumnIndex 0
mSelfObserver null
mSelfObserverLock Object (id=830060762680)
mSelfObserverRegistered false
mStackTraceElements null
mUpdatedRows HashMap (id=830060762696)
mWindow null
itemList ArrayList (id=830060763184)
・検索結果の先頭レコードにカーソルを移動し、リストへデータ追加
cursor.moveToFirst(); //検索結果の先頭レコードにカーソルを移動
while( !cursor.isAfterLast()){
itemList.add( getItem( cursor ) );
cursor.moveToNext();
}
} finally {
db.close();
}
//itemList ArrayList (id=830060748640)
//[0] RecordItem (id=830060751240) … DBより取得した該当レコード
// itemhi "18" (id=830060752528)
// itemnen "2014" (id=830060751336)
// itemnikki "服を買う" (id=830060751272)
// itemtuki "1" (id=830060751400)
// rowid 3
return itemList;
}