나는 안드로이드 개발에 초보자 다. 나는 Commonsware의 "안드로이드 개발에 대한 바쁜 코더 가이드"에서 발췌 한 내용에 대해 질문했다. ListActivity를 확장하는 클래스를 생성하고 컨텍스트 메뉴를 통해 목록에서 제거하고 삭제할 수있는 기능을 보여주는 예제가 있습니다. 리스트의 문자열 소스를 가진 ArrayAdapter를 설정하기 전에 텍스트는 String 배열을 ArrayList 타입으로 변환한다고 말합니다. "우리는 즉시 목록의 내용을 변경할 수 있기를 원합니다. 일반 문자열 배열보다는 ArrayList를 사용하면 더 쉽습니다. "안드로이드 개발 - ArrayList 사용 <String> 대 배열 ArrayAdapter를 가진 문자열 배열
나는이 개념을 알고 있습니다. 우리가 ArrayList 또는 String 배열을 사용하여 직접 목록을 조작했다면, 왜 우리가 ArrayAdapter.add 삽입/삽입 방법? 일단 ArrayAdapter가 생성되면 (또는 그 .java 파일에서 이해할 수있는대로) Array 또는 ArrayList에서 왔는지에 관계없이 소스 데이터를 List 객체로 변환합니다.
어댑터를 만들 때 정상적인 배열을 사용해 보았는데 오류가 발생했습니다 (텍스트가 말한대로 예상 한대로).하지만 이유를 모르겠습니다. ArrayAdapter와 ArrayList를 ArrayList로 만드는 것의 차이점은 ArrayList와 ArrayList를 같은 List 객체로 변환하지 않는다는 것입니다. 어댑터를 통해 추가/삽입/제거 할 때 원본 소스 변수에 어떤 종류의 동점이 있습니까?
오랜 질문을드립니다. 미리 감사드립니다.
빠른 응답을 보내 주셔서 감사합니다. 나는 그것이 조금 더 명확 해지고 있다고 생각한다. 그러나, 나는 배열이나 ArrayList를 직접 변경하지 않는다는 사실에 대해서는 여전히 확실하지 않다. 어댑터를 변경하려고한다. (원래 소스에서 생성 된 자신의 List에 add/insert를 호출한다.)). 그 ArrayAdapter 배열에서 제공되는 Array.AdList() 사용되는 목록에서 본 것으로 생각했는데 그 목록에 대한 변경 사항을 원래 배열에 다시 쓰려고 할 것이라고 생각합니다. 따라서 어댑터에서 add를 호출하면 간접적으로 원래 배열에서 add를 호출하려고 시도합니다. –