应用程序从assets文件夹复制一个预填充的数据库,从那里获取每列的数据值,并将其存储在数组列表中,然后从那里将标记绘制到Map上。
现在我需要一种方法,如果标记位于设备的某个范围内,则该方法可以将预先存在的数据列(称为“active”)的值从0更改为1。我编写的方法只添加了大约40行信息,其中“active”列的数据为“1”,其余为空,但不影响以前的数据。
如何将设备范围内的右标记数据行的“活动”列更改为1?我希望我写这封信是为了让你能理解。我大致知道如何根据需要更改特定行的列信息,但由于我需要根据设备当时的位置获取特定行,因此我不知道如何这样做。
databasehelper到目前为止更新列的方法
public void setActive()
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("active", 1);
db.update(TABLE_NAME, cv, "id= ?",null );
}
``` `Mainactivity` ,一种检查位置是否在范围内的方法。它还有一个额外的方法,每10秒使用一个计时器来检查位置是否在范围内。
fusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
Double lat = location.getLatitude();
Double lon = location.getLongitude();
LatLng latlon = new LatLng(lat, lon);
for (MyLatLngData location1 : locations) {
LatLng loc1 = new LatLng(location1.getLatitude(),location1.getLongitude());
if (SphericalUtil.computeDistanceBetween(latlon, loc1) < 1000) {
databaseHelper.setActive();
提前谢谢。
1条答案
按热度按时间t3psigkw1#
如果有行id,则可以执行以下操作:
也可以通过添加
?
对于每一个?
必须在forth参数的字符串数组中添加字符串。这样地: