안드로이드 개발 질문/답변
(글 수 45,052)
ListView 만들고 ArrayAdapter의 GetVIew() 메소드를 재정의 하였습니다.
getView(int position, View convertView, ViewGroup parent) {
....
}
일반적으로 convertView ==null 시에만 인플레이션으로
View 를 만들어서 화면의 로우마다 그려질 때(getView() 호출해서 ) convertView 재사용하지 않습니까?
그런데 getView 메소드 안에서
View v = convertView ;
TextView txt =(TextView) v.findViewById(R.id.TextView01);
Toast.make(this, txt.toString() + "//" +v.toString() , Toast.LENGTH_SHORT).show()
해보면 txt.toString() 와 v.toString() 의 해쉬코드 값이 GetView 호출시마다 다릅니다.
해쉬코드가 틀리면 같은 객체가 아니라는 말인데 왜그런 걸까요? 소스는 첨부화일에 넣었습니다
converView나 TextView txt 는 getView() 를 호출할 때 새로운 메모리 주소에 적재되기 때문일 것 같습니다. 위에 말씀하신 해쉬코드란 제가 지식으론 가상머신에서 앱이 할당받은 메모리 공간의 주소거든요...