본문 바로가기
개발자 도전기

[안드로이드] Chip을 Java 파일에서 생성하는 방법

by 개발하는아빠 2022. 10. 11.

예시 설명

A회원이 수강중인 수업 과목을 데이터베이스(DB)에서 받는 경우라고 생각해보자.

유저정보(userInfo) 테이블에 교과목(subject) 칼럼에는 '수학;영어;국어;'의 값이 저장되어있다.

클라이언트에서 전달 받는 값 : 수학;영어;국어;

전달 받은 값을 과목별로 분리해서 배열에 담는다.

이때 사용하는 함수 : split();

 

String subject = '수학;영어;국어;'
String[] subjectList = subject.split(";");  // ';'를 기준으로 잘라서 배열에 담는다.

배열에 담았으면, 반복문을 통해 과목별 Chip을 생성한다.

for (int i = 0; i<   Chip chip = new Chip(ProfileActivity.this);
.length; i++){
  Chip chip = new Chip(ProfileActivity.this);
  chip.setText(subjectList [i]);
  chip.setTextAppearanceResource(R.style.ChipTextStyle);
  chip.setChipBackgroundColorResource(androidx.cardview.R.color.cardview_dark_background);
  chipGroup.addView(chip);
  }

 

여기서 주의할 사항이 있다.

Chip 객체를 생성할 때, 매개변수에 Context를 담아주어야 한다.

getApplicationContext() 함수를 사용해서 현재 Context를 넣으면 에러가 뜬다.

(다이얼로그에서도 이런 유사한 경험이 있는데 정확한 이유는 모르겠다.)

위 함수를 사용하는 대신에 현재 액티비티.this를 입력하면 정상 동작한다.

까먹지 않으려고 내용을 정리해봤다.