私は Android を学んでいますが、カスタム コンテンツ プロバイダーの呼び出しに関する問題で行き詰まっています。私は教則本の例を使用しており、カスタム プロバイダーの作成方法について説明していますが、特定のメソッドを呼び出す方法の明確な例はありません。カスタム コンテンツ プロバイダーから単一のレコードを削除する方法を具体的に検討しています。
カスタム コンテンツ プロバイダ ( EarthquakeProvider.java
) のコードは次のとおりです。
@Override
public int delete(Uri uri, String where, String[] whereArgs) {
int count;
switch (uriMatcher.match(uri)) {
case QUAKES:
count = earthquakeDB.delete(EARTHQUAKE_TABLE, where, whereArgs);
break;
case QUAKE_ID:
String segment = uri.getPathSegments().get(1);
count = earthquakeDB.delete(EARTHQUAKE_TABLE, KEY_ID + "="
+ segment
+ (!TextUtils.isEmpty(where) ? " AND ("
+ where + ')' : ""), whereArgs);
break;
default: throw new IllegalArgumentException("Unsupported URI: " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
メイン アクティビティから delete メソッドを呼び出して、データベース全体ではなく単一のエントリを削除しようとしています。OnLongClickListener
メイン アクティビティで配列リスト ビューに表示される選択レコードに対して約 を使用したいと考えています。
これは、私がこれまでにこの方法の主な活動で行ってきたものです。
earthquakeListView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView _av, View _v, int _index,
long arg3) {
ContentResolver cr = getContentResolver();
cr.delete(earthquakeProvider.CONTENT_URI, null, null);
return false;
}
上記のコードが機能しないことはわかっていますが、これは私の現在の理解で得られる限り近いものです。
これに関するヘルプは非常に高く評価されます。