カテゴリー:
日記アプリ
閲覧数:525 配信日:2013-10-05 09:48
AsyncTask
・比較的重たい処理となる「データベース問い合わせ、一覧データ取得・表示」は、メインスレッド(UI thread)に負荷を与えずに行うため、AsyncTaskクラスを継承した「DataLoadTask」クラスで実施
3-1.AsyncTaskクラス作成
AsyncTaskクラスを継承したクラスを作成
・Generics指定(引数の型を指定)
public class DataLoadTask extends AsyncTask<Object, Integer, List<RecordItem>> {
第1引数(実行時引数) … Object
・java.lang.Object
第2引数(進捗単位) … Integer
・java.lang.Integer
第3引数(処理結果) … List<RecordItem>
・java.util.List<android.style.systemdb.RecordItem>
3-2.メソッド実装
doInBackground … メイン処理(=バックグラウンドで非同期に実行させたい処理)]
・「データベース操作クラス」のインスタンス生成
・「データベース操作クラス」の検索メソッド実行
・検索結果を返す
@Override
protected List<RecordItem> doInBackground(Object... params) {
/* 一覧を呼び出し */
RecordDaoItem dao = new RecordDaoItem(ActivityTop.this);
return dao.list_search_item( Record ,isWordSearch );
}
onPostExecute … スレッドが終了した後に呼ばれる
※引数resultは、先のdoInBackground()でreturnしたオブジェクト。ここでは検索結果一覧
protected void onPostExecute(List<RecordItem> result) {
・表示日付を更新
・現在の一覧表示をクリア
arrayAdapter.clear();
・一覧表示のデータ設定 … 検索結果を、拡張for文を利用して、arrayAdapterインスタンスに追加
/* 一覧表示のデータを設定 */
for (RecordItem item : result) {
arrayAdapter.add(item);
if( item.getItemNen().equals(String.valueOf(year))
&& item.getItemTuki().equals(String.valueOf(month))
&& item.getItemHi().equals(String.valueOf(day)) ){
btn_top_add.setVisibility(View.GONE);
}
}