package jp.mixi.sample.simplecursoradapter;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListView;
public class MainActivity extends Activity {
private BookOpenHelper mBookOpenHelper;
private SimpleCursorAdapter mSimpleCursorAdapter;
private Cursor mCursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBookOpenHelper = new BookOpenHelper(this);
ListView listView = (ListView) findViewById(R.id.ListView);
// データを取得
mCursor = read(mBookOpenHelper);
// UIにバインドするデータのカラム名
String[] from = {
Book.COLUMN_NAME_BOOK_TITLE, Book.COLUMN_NAME_BOOK_PRICE
};
// 指定したカラムのデータを表示するViewのIDを指定します。
int[] to = {
R.id.Title, R.id.Price
};
// 第2引数 リストに表示するレイアウトファイル
// 第3引数 データベースから取得してきたCursorを指定します
// 第4引数 UIにバインドするデータのカラム名を指定します
// 第5引数 第4引数で指定したカラムのデータを表示するViewのIDを指定します。
// また、第4引数の配列の並び順とViewIDの並び順は対応させる必要があります。
// 第6引数 Adapterの振る舞いを指定します。
mSimpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item_book, mCursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listView.setAdapter(mSimpleCursorAdapter);
findViewById(R.id.Add).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
insert(mBookOpenHelper);
// データを再読み込みしてListの表示を最新のものにします
mSimpleCursorAdapter.getCursor().requery();
}
});
}
private void insert(BookOpenHelper bookOpenHelper) {
// 書き込み用のSQLiteDatabaseを取得
SQLiteDatabase db = bookOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Book.COLUMN_NAME_BOOK_TITLE, "TITLE1");
values.put(Book.COLUMN_NAME_BOOK_PUBLISHER, "PUBLISHER1");
values.put(Book.COLUMN_NAME_BOOK_PRICE, "PRICE1");
// 戻り値はRowID(_ID)
// エラーの場合は-1になる
long rowId = db.insert(Book.BOOK_TABLE_NAME, null, values);
}
private Cursor read(BookOpenHelper bookOpenHelper) {
// 読み込み用のSQLiteDatabaseを取得
SQLiteDatabase db = bookOpenHelper.getReadableDatabase();
// 取得する情報を指定
String[] projection = {
Book._ID,
Book.COLUMN_NAME_BOOK_TITLE,
Book.COLUMN_NAME_BOOK_PUBLISHER,
Book.COLUMN_NAME_BOOK_PRICE
};
// 条件を指定
String selection = Book.COLUMN_NAME_BOOK_PRICE + " = ?";
String[] selectionArgs = {
"PRICE1"
};
Cursor cursor = db.query(Book.BOOK_TABLE_NAME, projection, selection, selectionArgs, null, null, null);
return cursor;
}
@Override
protected void onDestroy() {
super.onDestroy();
mCursor.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}