@Override
public void onEvent(List<Users> usersList, int position) {
recentList.add(i,usersList.get(position));
Log.e("zzzz", String.valueOf(i));
Log.e("zzzz", String.valueOf(recentList));
if(i>0) {
for(int k=0;k< i;k++){
if(recentList.get(i).name == recentList.get(k).name){
recentList.remove(k);
i--;
break;
}
}
}
i++;
saveData(recentList);
}
public void saveData(List<Users> list){
SharedPreferences sharedPreferences = getSharedPreferences("ref8",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(list); // 자바 obj -> json
editor.putString("list", json);
editor.putInt("index",i);
editor.apply();
}
public void loadData(){
SharedPreferences sharedPreferences = getSharedPreferences("ref8",MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("list", null);
Type type = new TypeToken<ArrayList<Users>>() {}.getType();
recentList = gson.fromJson(json,type); // json -> 자바 obj
i = sharedPreferences.getInt("index",i);
if(recentList == null){
recentList = new ArrayList<>();
}
}
saveData를 하면 잘 저장되고 앱 종료후 나갔따 들어와도 onCreate()에서
loadData를 하여 데이터도 잘 받아옵니다.
문제는
com.example.project_money.Users@84ad6d1, com.example.project_money.Users@b30ecc9
com.example.project_money.Users@ec270af, com.example.project_money.Users@d797cbc
loadData를 하고 recentList를 출력해보면 저렇게 값이 다릅니다.
데이터는 잘 찍히는데 달라서 for문에서 remove하는 로직(중복을 제거하는)
이 동작되지않습니다. 제 생각에는 loadData()를 해서 값이 변경되는거 같은데
왜그런건가요??