안드로이드 With Java #16 View Component를 동적으로 다루는 방법
내가 원하는 시점에 View의 내용을 바꿔주는 것을 말한다.
이전까지는 View의 내용을 한번 정하고 View의 내용이 변하는 일이 없었다.
먼저, View에 id
를 부여해주어야 한다.
아이디는 위와 같은 형식으로 @+id/아이디명
형식으로 부여해주면 된다.
id
를 부여하면 findViewById()
메소드를 통해 java 코드에서 id를 부여한 컴포넌트를 가져올 수 있다.
findViewById()
메소드를 통해 뷰 컴포넌트를 가져오면 뷰 컴포넌트의 하위 메소드를 통하여 뷰를 동적으로 다루면 된다.
위의 소스코드는 ImageView = imageView;
를 통해 이미지 뷰를 선언하고 findViewById()
메소드를 통해 R.id.imageView
imageView
아이디를 가진 뷰 컴포넌트를 가져왔다.
R
클래스란 안드로이드 개발 시에 사용되는 각각의 리소스를 관리하기 쉽게 만들어주는 역할을 하는 클래스이다.res
밑에 리소스 파일을 추가하면 해당 파일명으로 된 int형 변수가 R.java에 자동으로 추가된다. 자바 코드에서는 이를 변수로 리소스를 지칭할 수 있다.
R.id.id명
으로layout
내부의 id를 지칭할 수 있다.R.drawable.이미지명
으로drawable
내부의 이미지를 지칭할 수 있다.R.string.스트링명
으로strings
내부의 문자열을 지칭할 수 있다.
그리고 이후에 imageView
의 내용을 drawable
에 위치한 bubble
이라는 이미지로 변경하였다.
결과는 다음과 같다.
이미지가 잘 변경된 것을 볼 수 있다.
텍스트뷰는 위의 이미지 뷰 변경하기와 거의 동일한데 메소드만 setTextView()
를 사용하면 된다.
이렇게 텍스트가 잘 바뀐 것을 확인할 수 있다.
위와 같이 리소스의 strings.xml
에 거품입니다라는 텍스트를 저장하고, java
파일에서 가져와보자.
가져올 때 코드는 위와 같이 작성하면 된다.
getApplicationContext().getResources().getString(R.string.id명);
결과가 잘 변경된 것을 확인할 수 있다.
리소스 중 strings
항목에는 문자열만 저장 가능한 것이 아니라 아래처럼 문자열 배열도 저장 가능하다.
위는 ['배','열','테','스','트']라는 문자열을 순차적으로 저장한 것이다. 이 문자열을 하나씩 가져와서 Toast
로 띄워보자.
위와 같이 소스코드를 짜면 된다. context
를 가져올 때는 이전에 배웠던 this
와 MainActivity.this
둘 중 어느것을 사용해도 무관하다.
.show()
메소드까지 사용하지 않으면 메세지가 뜨지 않음에 유의하자.
위와 같이 Toast
메세지가 순차적으로 잘 출력된다.
텍스트 이미지의 내용 뿐만 아니라 뷰에서는 아주 많은 속성들을 가지고 있다. 크기 등 아주 많은 것을 동적으로 설정할 수 있으니 필요할 때마다 찾아서 잘 써보자.