Я пытаюсь найти способ сохранить всю электронную почту, используемую для входа в приложение на устройстве, и отображать ее как подсказку или автозаполнение, когда пользователь пытается войти в приложение.
Я попытался использовать общие настройки и сохранить их в ArrayList во время входа в систему. Однако при каждом входе в систему электронное письмо заменяется последним, а не добавляется.
Пример: сначала я авторизируюсь с admin@admin.com и выхожу из системы. При следующем входе в систему появится предложение admin@admin.com. Однако, если теперь я войду в систему с employee@employee.com, старый сохраненный адрес электронной почты будет заменен новым.
То, что я сделал, чтобы получить это, было первым, после входа в систему я сохранил электронную почту пользователя из ответа сервера в общем предпочтении.
Затем я помещаю эти данные в ArrayList
SharedPreferences getEmail = getSharedPreferences("userEmail", Context.MODE_PRIVATE);
String input_email = getEmail.getString("emp_email", "");
ArrayList<String> userList = new ArrayList<>();
userList.add(input_email);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, userList);
if (userList.size() > 0){
userEmail.setAdapter(adapter);
}
Приведенный выше код внутри метода onCreate активности входа в систему. Как я могу это сделать.
Я думаю, может быть, это не правильный способ запомнить адрес электронной почты для автоматического предложения. Если так, то, пожалуйста, укажите мне правильное направление.
Спасибо.
Обновление
Получение ответа от сервера в LoginActivity при успешном входе в систему
public void getDataForId() {
SharedPreferences authToken = getSharedPreferences("authToken", Context.MODE_PRIVATE);
String token = authToken.getString("token", "");
apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
Call<UserResponse> call = apiInterface.getData("Bearer " + token);
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
if (response.isSuccessful()) {
String emp_email = response.body().getUser().getEmail();
ArrayList<String> listEmails = getFromPrefs(this);
if(listEmails == null){
listEmails = new ArrayList<>();
listEmails.add(emp_email);
}
saveToPrefs(this, listEmails);
/*Log.i("MainActivity", "onCreate: " + getFromPrefs(this).toString());
if(!listEmails.contains(emp_email)){
listEmails.add("b@b.b");
}
saveToPrefs(this, listEmails);
Log.i("MainActivity", "onCreate: " + getFromPrefs(this).toString());*/
} else {
}
}
@Override
public void onFailure(Call<UserResponse> call, Throwable t) {
}
});
}
Обратите внимание, что я получаю электронное письмо в переменной ** emp_email * (предположим, что две другие заданные вами функции находятся в файле). Я предполагаю, что закомментированная часть (после сохранения первого электронного письма) будет начинаться в методе onCreate для меня, как и после выхода из системы.
там я получаю данные pref, вижу, что новое электронное письмо совпадает с данными pref, а затем сохраняет их. Это когда его заменяют.