AndroidでListViewのタップできる範囲を広げる

ふとあれっ、とはまったのでメモ

AndroidでListViewの1項目をタップして何かさせるときタップして何かさせるとき

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        // 何かの処理
    }
});

こんなコードでタップして動くはずが
listview-small
文字のとこしか反応しない..

解決するにはlayoutファイルを修正します
ListViewのlayout_widthをwrap_contentからmatch_contentに
[text]
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/listView"
android:layout_weight="1" />
[/text]
これでタップ範囲が行全体になりました
listview-large

Android実機デバッグでSQLiteのデータを見る

Androidアプリの開発中、データをSQLiteに保存してSQLiteの中を見たい時があります

adb -d shellとかで見ることができますが実機でデバッグしてると権限がないとか
そのままSQLiteにつなげないとかになります

そのときは


$ (Android Studioのディレクトリ)/sdk/platform-tools/adb -d shell "run-as (アプリ名) cat /data/data/(アプリ名)/databases/(データベース名) > /sdcard/output.db"
$ (Android Studioのディレクトリ)/sdk/platform-tools/adb pull /sdcard/output.db

なんてやると、手元にSQLiteファイルが持ってこれます

Eclipseの場合も同様にできると思います

[Android Studio]AndroidManifest.xml does’nt exist..の回避方法

Android Studio 0.8.9を使っていてProjectをOpen、実行しようとすると
AndroidManifest.xmlがないとかエラーが
AndroidStudio-error

AndroidManifest.xmlはあるのになー、と思いましたが
プロジェクトを保存してたディレクトリを移動したんでした

いったん、Close Projectして、Import ProjectでAndroid Studioに頑張ってもらうと
直りました
(Build>Rebuild Projectもしないとだめかもしれません)

[Android]ContentProviderのinsertで投げるSQLException

AndroidのContentProviderのinsertでSQLExceptionをthrowしようと
こんなソースコードで
[java]
public Uri insert(Uri uri, ContentValues contentValues) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
long rowId = db.insert(TABLE_NAME, null, values);

if (rowId > 0) {
Uri newUri = ContentUris.withAppendedId(MyContract.CONTENT_URI, rowId);
getContext().getContentResolver().notifyChange(newUri, null);
return uri;
}
throw new SQLException("Failed to insert row into:" + uri);
}
[/java]
IDEがエラー扱えない例外..とかエラーがでるとき
importが違ったみたいです

import java.sql.SQLException;
でなくて
import android.database.SQLException;
にすると直りました