Я изучаю 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;
}
Я знаю, что приведенный выше код не работает, но это как можно ближе к моему текущему пониманию.
Любая помощь по этому поводу будет очень оценена.