私はAndroidアプリでSQLiteを使用しています。すべてが素晴らしいですが、天気アプリに場所を追加してからスワイプしても、その場所はTABLEから削除されません。Android上のSQLiteが行を削除しない
ここで私は場所を取得し、場所を追加して削除します。
public TreeMap<String, LatLng> getSQLLocations() {
TreeMap<String, LatLng> locations = new TreeMap<>();
for (int i =0; i < mCursor.getCount(); i++) {
mCursor.moveToPosition(i);
String name = mCursor.getString(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LOCATION_NAME));
double lat = mCursor.getDouble(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LAT));
double lon = mCursor.getDouble(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LONG));
LatLng latLng = new LatLng(lat, lon);
locations.put(name, latLng);
}
return locations;
}
public boolean removeSQLLocation(int position) {
mCursor.moveToPosition(position);
long id = mCursor.getLong(mCursor.getColumnIndex(WeatherContract.WeatherEntry._ID));
boolean deleted = mDb.delete(WeatherContract.WeatherEntry.TABLE_NAME, WeatherContract.WeatherEntry._ID + "="
+ id, null) > 0;
return deleted;
}
public long addSQLLocation(String name, LatLng latLng) {
double lat = latLng.latitude;
double lon = latLng.longitude;
ContentValues cv = new ContentValues();
cv.put(WeatherContract.WeatherEntry.COLUMN_LOCATION_NAME, name);
cv.put(WeatherContract.WeatherEntry.COLUMN_LAT, lat);
cv.put(WeatherContract.WeatherEntry.COLUMN_LONG, lon);
long ret = mDb.insert(WeatherContract.WeatherEntry.TABLE_NAME, null, cv);
refreshLocationNames();
return ret;
}
EDIT 1:ここに問題があります。私は行を削除しようとするが、データベースから直接データをリロードすると、更新されない。したがって、データをデータベースに追加してリロードしようとすると、リフレッシュされません。問題は、データベースの変更では更新されませんが、アプリケーションを再起動すると更新されます。
は、ここに私のgithubのデータベースファイルのリンクです:
https://github.com/tsmadm/Stormy-WeatherApp/tree/SQL/app/src/main/java/com/tsm/stormy/SQL
DBクラスに行削除メソッドがありますか? –
アダムあなたは私のためにそれをチェックすることができます、私はSQLのおかげで多くの新しいです! – TSM