안드로이드 개발

DB에서 가져온 String 데이터로 안드로이드에서 Image Source로 변경시키기

Per ardua ad astra ! 2021. 12. 7. 12:03

1. 서버에서 전달받는 String 형태 

img: "profile_basic1"

2. 안드로이드 파일 

3. 처리 

형태 

int imageResource = getResources().getIdentifier( name: "파일명", defType: "폴더명",
                                                                   defPackage: getContext().getPackageName());

imageView.setImageResource(imageResource);

 

ex) 예시

int imageResource = getResources().getIdentifier("profile_basic1", "drawable", getContext().getPackageName())
imageView.setImageResource(imageResource);


(1) getResources()
특별한 객체 생성 없이 get*()으로 호출할 수 있는 경우는 Context가 지원해주는 메소드기 때문이다.
Activity는 Context의 자식이므로 자식들은 이 기능을 모두 사용할 수 있는 것이라고 한다.

  • getResources의 반환형 Resources, 이 클래스를 이용하여 애플리 케이션의 리소스에 엑세스할 수 있다. 
  • get*()을 통해서 String, int, drawable 등 여러 객체로 값을 반환 받을 수 있다.
  • getDrawable()과 getIdentifier()를 가장 많이 사용하는 것 같다. 

사용 예제

Drawable drawable = getResources.getDrawable(R.drawable.파일명)

 


(2) getIdentifier()

=> 해당 Resources에 있는 어떤 한 리소스의 고유 ID(식별자) 값을 가져온다. 

getResources().getIdentifier(파일명, 디렉토리명, 패키지명);형태인데, 
파일명에 디렉토리명, 패키지명을 다 넣고, 2번째,3번째 인자에는 null값을 넣어도 되나보다. 

패기키지 명에 들어가는 값이 getContext().getPackageName() 인데
이 값을 출력해 보니
org.techtown.wanted_app_main 라고 나온다.