본문

[2017.10.18] 53. JSON 데이터 가공 [라이브러리(Glide, GSON) 사용 O]

도입

이번 포스팅에서는 지난 포스팅(http://heepie.tistory.com/149)의 JSON 데이터 가공 처리를 'GSON' 라이브러리로, URL 이미지 로드는 'Glide' 라이브러리를 사용해 처리해 볼 예정이다.



JSON 데이터 가공 [라이브러리(Glide, GSON) 사용 O]의 데이터 흐름

그림과 같이 JSON Data는 GSON으로 가공해 가공한 데이터의 이미지는 Gilde로 처리하는 흐름이다.



실습

Remote.class

Remote.class는 이전 포스팅 코드와 동일

MainActivity.class

parse 메소드가 정말 간단해진 것을 이전 포스팅과 비교하면 확실히 느낄 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private List<User> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        initData();
        initView();
        initRecyclerView();
    }
 
    private void initView () {
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    }
 
    private void initData() {
 
        new AsyncTask<Void, Void, List<User>>() {
 
            @Override
            protected List<User> doInBackground(Void... params) {
                String rowData = Remote.getData("https://api.github.com/users");
                return parse(rowData);
            }
 
            @Override
            protected void onPostExecute(List<User> getData) {
                // jsonString을 가공(parsing)
                data = getData;
                initRecyclerView();
            }
        }.execute();
    }
 
    // 메소드의 목적은 jsonData를 가공해 리스트에 입력하는 메소드
    private List<User> parse(String jsonString) {
        Gson gson = new Gson();
        User[] user = gson.fromJson(jsonString, User[].class);
        return Arrays.asList(user);
    }
 
    private void initRecyclerView() {
        JsonDataRecyclerAdapter adapter = new JsonDataRecyclerAdapter(this, data);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }
}
cs


JsonDataRecyclerAdapter.class

클래스 안에서 Glide를 통해 이미지를 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class JsonDataRecyclerAdapter extends RecyclerView.Adapter<Holder> {
       // ...
    @Override
    public void onBindViewHolder(Holder holder, int position) {
        User item = data.get(position);
        holder.setUser(item);
        holder.setDataToScreen();
 
        // 이미지 불러오기
        Glide.with(context)                 // 글라이드 초기화
             .load(item.getAvatar_url())    // 이미지 불러오기
             .into(holder.imageView);       // 대상 위젯에 추가
    }
    // ...    
}
cs




스크린 샷

Gilde 라이브러리를 사용하니 이전 포스팅과 비교했을 때 확실히 빠르다라는 것을 느꼈다.



#JSON 안드로이드 #JSON 데이터 가공 #JSON #GSON #Glide #지슨 #글라이드

공유

댓글