我有一个从API获取的商店列表。每个人都有不同的ID和姓名(以及其他参数)。用户可以在他们每个人中登录,并且在他们这样做时,他们需要保持登录状态,无论如何,直到他们最终退出。我想到的是,在SharedPreferences中保存商店的号码/ ID并登录用户。然后,当我检查用户是否登录时,我检查SharedPreferences中保存的商店号是否与如果是这样,他们已经登录,如果不是,他们没有登录。问题是,如果他们登录到另一家商店,SharedPreferences将被覆盖的数字/ ID为另一家商店。所以,基本上,这样他们只能在一家商店登录。我怎样才能让我在SharedPreferences中购物,然后以某种方式检查他们之后是否登录了正确的商店?在SharedPreferences中多次存储具有不同参数的对象
登录店
@Override
public void loginShop(final Shop shop, UserInfo userInfo, final Callback<Shop> callback) {
ShopLoginBody body;
body = map(shop, userInfo);
mCallLogin = App.getRestClient().getApiService().shopLogin(body);
mCallLogin.enqueue(new retrofit2.Callback<ShopLoginResult>() {
@Override
public void onResponse(Call<ShopLoginResult> call, Response<ShopLoginResult> response) {
int loginNumber;
int customerNumber;
Result<Shop> result = new Result<>();
if (response.code() != 200) {
try {
JSONObject objError = new JSONObject(response.errorBody().string());
Error error = new Error();
error.setErrorMessage(objError.getString("errorMessage"));
error.setErrorCode(objError.getInt("errorCode"));
callback.onFailure(error);
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
loginNumber = response.body().getLoginNumber();
customerNumber = response.body().getCustomerNumber();
mPreferenceAdapter.writeShopNumber(shop.getId());
mPreferenceAdapter.writeLoginNumber(loginNumber);
mPreferenceAdapter.writeClientNumber(customerNumber);
mPreferenceAdapter.writeIsLoggedIn(true);
mPreferenceAdapter.apply();
shop.setLoginId(loginNumber);
shop.setCustomerId(customerNumber);
ShopRepository shopRepository = new ShopRepository();
shopRepository.updateLoginNumber(shop);
result.setData(shop);
callback.onSuccess(result);
}
@Override
public void onFailure(Call<ShopLoginResult> call, Throwable t) {
}
});
}
我以后怎么检查
isLoggedIn = mPreferenceAdapter.readIsLoggedIn();
shopNumber = mPreferenceAdapter.readShopNumber();
if (shopNumber == mShop.getId() && isLoggedIn) {
menu.findItem(R.id.action_login).setVisible(false);
menu.findItem(R.id.action_logout).setVisible(true);
} else {
menu.findItem(R.id.action_login).setVisible(true);
menu.findItem(R.id.action_logout).setVisible(false);
}
这样,我怎么能知道被点击其中一个,并登录到,而且,当用户登出我怎么能删除特定的一个? – Esteban