문제는 무엇이였나면 Food 라는 유형의 객체를 담는 ArrayList에 a라는 객체를 추가하고
다시 내용이 같은 a라는 객체를 추가하려할때 방지하고 감지할수 있도록 하려 햇는데
기존 contains() 메소드로는 있는 객체를 항상 감지하지 못하고 똑같은 객체 a를 다시 추가하는 경우가 있어
열심히 뒤졌더니 해결책이 있었다.
Food 클래스 내부에 equals(Object object) 를 Override 하여
Food 클래스 안에서 비교하고 싶은 값을 아래처럼 지정해주면 (나같은 경우에는 Food 클래스의 name 값이 같으면 같은 자료라고 보게 했다.)
contains() 를 해주어도 조건에 해당하는 객체가 있으면 true 값을 리턴하여준다.
@Override
public boolean equals(Object object) {
boolean sameSame = false;
if (object != null && object instanceof Food){
sameSame = this.name == ((Food) object).getName();
}
return sameSame;
}
출처 : http://stackoverflow.com/questions/2642589/how-does-a-arraylists-contains-method-evaluate-objects
'ANDROID' 카테고리의 다른 글
[안드로이드] 향후 기기별 화면 레이아웃 호환성을 위해 참조할 곳 (0) | 2018.01.08 |
---|---|
[안드로이드] 한 레이아웃에서 다른 레이아웃을 참조할 때 (0) | 2018.01.03 |
[안드로이드] 인텐트로부터 전달받은 String 값을 if 문으로 검출하기 (2) | 2016.12.10 |
완전 투명버튼 만들기 (0) | 2016.01.20 |
TextView를 원하는 곳까지 변경한다.. (0) | 2016.01.13 |