如何在Android中更新领域

时间:2019-05-21 11:11:50

标签: java android realm

我有RealmObject类,其中现在有状态列,我想更新该状态列的值 即使我检查Realm官方博客,我也不知道该怎么做,但并没有太大帮助。

public void storeDevice() {
    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(Login.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    }
    if (telephonyManager != null) {
        Log.e("imeino", telephonyManager.getDeviceId());
    }

    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    WifiInfo wInfo = null;
    if (wifiManager != null) {
        wInfo = wifiManager.getConnectionInfo();
    }
    String macAddress = "02:00:00:00:00:00";
    try {
        if (wInfo != null) {
            macAddress = wInfo.getMacAddress();
        }
        Log.e("device_mac", macAddress);
    } catch (Exception e) {
    }

    mobile = edit_mobile.getText().toString().trim();
    imei_no = telephonyManager.getDeviceId();
    brand = Build.MANUFACTURER;
    device_model = Build.MODEL;
    mac = macAddress;
    device_version = Build.VERSION.RELEASE;

    realm = Realm.getDefaultInstance();
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            DeviceModel deviceModel = realm.createObject(DeviceModel.class);
            RealmResults<DeviceModel> deviceModels =    realm.where(DeviceModel.class).equalTo("imei_no", imei_no).findAll();
            deviceModels.deleteAllFromRealm();

            deviceModel.setMobile(mobile);
            deviceModel.setImei_no(imei_no);
            deviceModel.setStatus("1");
            deviceModel.setBg_device_brand(brand);
            deviceModel.setDevice_mac(mac);
            deviceModel.setBg_device_model(device_model);

        }
    });
}

在这里,我想在if块内的OnResponse方法中更新值

private void storeCustomerData(Map<String, String> map, HashMap<String, Integer> map1) {

            Call<JsonElement> call = apiInterface.customerData(map, map1);
            call.enqueue(new Callback<JsonElement>() {
                @Override
                public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
                    JsonElement jsonElement = response.body();
                    Log.i("jsonElement", "data");
                    JsonObject jsonObject = jsonElement.getAsJsonObject();
                    String status = jsonObject.getAsJsonPrimitive("Status").toString();
                    Log.i("status", status);
                    if (status.equals("1")) {
                        realm.executeTransaction(new Realm.Transaction() {
                            @Override
                            public void execute(Realm realm) {
                                RealmResults<DeviceModel> results = realm.where(DeviceModel.class).equalTo("mobile", realm_mobile).findAll();
                                results.setValue("status", "5");
                                deviceModel.getStatus();
                                Log.i("status",deviceModel.getStatus());
                            }
                        });

                        Toast.makeText(RequiredData.this, "Your Data Has Been Succesfully Added", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(RequiredData.this, MainActivity.class);
                        startActivity(intent);

                    } else {
                        Toast.makeText(RequiredData.this, "Sorry, Unsucess to Save Data", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onFailure(Call<JsonElement> call, Throwable t) {

                }
            });
        }

1 个答案:

答案 0 :(得分:0)

您可以检查official documentation并搜索“ insertOrUpdate”。您必须定义主键才能使用insertOrUpdate。根据您的情况,主键为“ imei_no”。

例如,这是我的UserInfo对象类。

public class UserInfo extends RealmObject {

@PrimaryKey
private String userId;
private String userAge;
private String userSex;

public UserInfo() {

}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getUserId() {
    return userId;
}


public String getUserAge() {
    return userAge;
}

public void setUserAge(String userAge) {
    this.userAge = userAge;
}

public String getUserSex() {
    return userSex;
}

public void setUserSex(String userSex) {
    this.userSex = userSex;
}

}

并按如下所示插入或更新UserInfo对象:

mRealm = Realm.getDefaultInstance();

if (!mRealm.isInTransaction()) {
   mRealm.beginTransaction();
}

UserInfo userInfo = new UserInfo();
userInfo.setUserId("135455");
userInfo.setUserAge("22");
userInfo.setUserSex("male");

mRealm.insertOrUpdate(userInfo);
mRealm.commitTransaction();