[Android] Gson으로 폴더별로 json파일 읽어오기
게임 개발 초보자/안드로이드 연습장2018. 6. 4. 13:14
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");
'게임 개발 초보자 > 안드로이드 연습장' 카테고리의 다른 글
[Android] ListView, RecyclerView 데이터 추가할 경우 (0) | 2018.06.05 |
---|---|
[Android] DTO? VO? 만들기 (0) | 2018.06.04 |
[Android] ExtendableListView 만들기 (0) | 2018.06.04 |
[Android] res/values 폴더의 xml파일 내용 (0) | 2018.05.31 |
[Android] Notitle, FullScreen 설정 (0) | 2018.05.31 |