Я новичок в android.here Я делаю простой список контактов приложения. когда пользователь нажимает на элементы контакта, свяжитесь с ним в списке избранных. но проблема в том, что когда пользователь нажимает на первый элемент контакта для добавления избранного, тогда пользователь нажимает второй контакт, но первый элемент автоматически удаляется. Общие настройки перезаписывают другое значение, я хочу добавить элемент в список, чтобы я добавил, чтобы добавить контакты в список избранного.SharedPreferences перезаписывает другое значение?
Первый фрагмент:
imageViewfavourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name1", Pname);
editor.putString("number1", Pnumber);
editor.putString("image1", temp);
editor.putInt("pos", position);
Log.e("a", "name1" + Pname);
Log.e("a", "number1" + Pnumber);
Log.e("a", "image1" + temp);
editor.commit();
}
});
Второй фрагмент:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fragment_fv, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.favourite_list);
selectUsers = new ArrayList<DataContact>();
SharedPreferences preferences = getActivity().getPreferences(0);
String Pname = preferences.getString("name1", "");
String Pnumber = preferences.getString("number1", "");
String Pimage = preferences.getString("image1", "");
byte[] encodeByte = Base64.decode(Pimage, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
Log.v("name1", Pname);
Log.v("number1", Pnumber);
Log.v("image1", Pimage);
DataContact selectUser = new DataContact();
selectUser.setName(Pname);
selectUser.setPhone(Pnumber);
selectUser.setThumb(bitmap);
selectUsers.add(selectUser);
adapter = new AdapterFv(getActivity(), "");
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(llm);
adapter.setData(selectUsers);
recyclerView.setAdapter(adapter);
return view;
}
yes, значение будет перезаписано, если вы добавите значения под одним и тем же ключом для sharedPreference. –
Вы можете добавить избранные контакты в массивList, а затем преобразовать его в json и сохранить строку в SharedPref. когда вы загружаете свой контакт, загрузите json и пометьте его как избранный. –
Общие предпочтения используются для хранения определенных значений сеанса в формате ключевых значений, если вы хотите сохранить несколько значений для будущих использования, вы должны использовать базу данных SQLite, которая является надлежащим способом хранения структурированных данных. –