目次

雑記

dip、sp、pix

デザインのサイズ指定に使われるのが dip(dpも可)。
画面サイズ(解像度)に応じて表示する大きさが変わるので、どの解像度で見てもデザイン(イメージ)が崩れにくい。

フォントのサイズ指定に使われるのが sp。
dip同様、画面サイズとの比率でサイズ調整。

従来からあるpix。
固定サイズ指定になるので、画面サイズによる表示の違いを吸収できない。
非推奨。

デザイン周り

Android GUI PSD Vector Kit
http://www.smashingmagazine.com/2009/08/18/android-gui-psd-vector-kit/

デザインサンプル
http://www.androidpatterns.com/

rawQueryでバインド変数が使えない

~以下、2011年6月時点の話~

ドキュメントなどに従った記述であれば、バインド変数が使える。
ただし、実際にしてみると、記述によって以下のエラーが発生する

ERROR/AndroidRuntime(343): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x23aa00

どうも、ミドルウェアのバグらしい・・・
http://code.google.com/p/android/issues/detail?id=3153

like に % がついているとNG

String data = intent.getStringExtra("keyword");
String TABLE_NAME = "MyTable";
String query = "SELECT * FROM " + TABLE_NAME + " WHERE Name like '%?%'";
Cursor cursor = db.rawQuery(query, new String[]{data});

like に % がついていないとOK

String data = intent.getStringExtra("keyword");
String TABLE_NAME = "MyTable";
String query = "SELECT * FROM " + TABLE_NAME + " WHERE Name like ?";
Cursor cursor = db.rawQuery(query, new String[]{data});

事前にバインド変数に%をつけるとOK

String data = intent.getStringExtra("keyword");
data = "%" + data + "%";
String TABLE_NAME = "MyTable";
String query = "SELECT * FROM " + TABLE_NAME + " WHERE Name like ?";
Cursor cursor = db.rawQuery(query, new String[]{data});

バインド変数を使わなければ当然OK

String data = intent.getStringExtra("keyword");
String TABLE_NAME = "MyTable";
String query = "SELECT * FROM " + TABLE_NAME + " WHERE Name like '%" + data + "%'";
Cursor cursor = db.rawQuery(query, null);