회사는 정말 싫어욧





Gson을 사용할 경우 Open Module Settings의 dependencies에서 gson을 미리 추가할것!!

(오른쪽의 +버튼 누르고 Library Dependency에서 gson 검색)

main.xml 에서 ExpandableListView를 만듬 (id:elv)


ExpandableListView elv;

List<Chunja2> groupList = new ArrayList<>(); // 부모
List<List<Chunja>> childList = new ArrayList<>(); // 자식

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

elv = findViewById(R.id.elv);

Gson gson = new Gson();
try {
// 부모 읽기
InputStream is = getResources().openRawResource(R.raw.chunja2);
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
groupList = gson.fromJson(isr,new TypeToken<List<Chunja2>>(){}.getType());

// 자식읽기
InputStream is2 = getResources().openRawResource(R.raw.chunja);
InputStreamReader isr2 = new InputStreamReader(is2,"UTF-8");
List<Chunja> list = gson.fromJson(isr2,new TypeToken<List<Chunja>>(){}.getType());
// 4개씩 자식으로 만들기
for(int i=0;i<list.size();i+=4){
List<Chunja> list2 = new ArrayList<>();
list2.add(list.get(i));
list2.add(list.get(i+1));
list2.add(list.get(i+2));
list2.add(list.get(i+3));
childList.add(list2);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

ChunjaAdapter adapter = new ChunjaAdapter(this,groupList,childList);
elv.setAdapter(adapter);
}


InputStream의 getResources().openRawResource를 이용해 json 파일을 연다

위에서 만든 IS로 InputStreanReader를 만든다 ("UTF-8"을 붙여줘야 한글이 안깨짐)

fromJson을 이용해 파일을 읽어온다 (new TypeToken 쓰는 방법 주의)


Raw폴더의 경우 getResources().openRawResource 사용


assets 폴더의 경우 getAssets().open("chunja2.json");