Shared Preferences
сохранить пару ключ-значение . Чтобы сохранить несколько элементов в SharedPreferences
, вам необходимо назначить уникальный ключ для каждого элемента. Давайте назовем наш ключ как «userID».
int userID = 0;
и сохраним информацию о пользователе в общих настройках, как это
SharedPreferences sharedPreferences= getSharedPreferences("user", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("username_"+userID,username.getText().toString());
editor.putString("password_"+userID,password.getText().toString());
editor.apply();
Когда вы добавляете другой объект пользователя, увеличивайтеuserID
++userID;
Так что теперь ваш shared preferences
будет содержать два элемента с ключами <username_0>
и <username_1>
.
Также при получении данных из preferences
не забудьтеиспользуйте правильный ключ.
String name=sharedPreferences.getString("username_"+userID,"");
Для циклов: предположим, что у вас есть 5 элементов, и вы хотите добавить их к вашим List
в onCreate
из MainActivity
.
final ArrayList<items> login = new ArrayList<items>(itemCount);
for (int i = 0; i < 5; i++) {
// command below will be executed 5 times, and i will range from 0 to 4(both inclusive)
login.add(new items("name" + i, "password" + i));
}
// now our login list has 5 elements(namely name0,name1...name4)
При нажатии на кнопку прослушивания кнопки сохранения, сохраните все list
в shared preferences
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
for (int i = 0; i < 5; i++) {
// save entire list using loop.
editor.putString("username" + i, login.get(i).getUsername());
editor.putString("password" + i, login.get(i).getPassword());
}
editor.apply();
// Toast.makeText(this,"Saved",Toast.LENGTH_LONG).show();
}
});
в List activity
читать данные из предпочтений.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
final ArrayList<items> login = new ArrayList<items>();
SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
for (int i = 0; i < 5; i++) {
String name = sharedPreferences.getString("username" + i, "");
String password = sharedPreferences.getString("password" + i, "");
login.add(new items(name, password));
}
itemsAdapter itemsAdapter = new itemsAdapter(this, login);
ListView listView = (ListView) findViewById(R.id.list_activity_container);
listView.setAdapter(itemsAdapter);
}
Однако в ListActivity
вам не нужно читать данные из shared preferences
, вы можете связать данные в Intent
, используемом для запуска ListActivity
и в ListActivity
получите данные из Intent.