원쥬
원주는 공부중
원쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Django (0)
    • Vue3 (2)
    • Android (7)
    • Arduino (0)
    • JSPServlet (0)
    • CSS (0)
    • HTML (0)
    • Java (9)
      • Java (9)
      • JavaFestival (0)
    • JavaScript (0)
    • Machine Learning (5)
    • Python (2)
    • Project (1)
      • first_project (1)
      • second_project (0)
      • third_project (0)
    • Tistory (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Vue3
  • android
  • Python
  • visible
  • button
  • matplotlib
  • v-on
  • machine learning
  • 안드로이드 스튜디오
  • 폰트바꾸기
  • 손글씨데이터
  • 영화데이터
  • Ref
  • machinelearning
  • v-bind
  • pandas
  • while문 예제
  • 안드로이드
  • while
  • 사라지게하기
  • textarea 오른쪽 하단
  • invisible
  • API
  • while문
  • volley
  • AndroidStudio
  • JSON
  • v-model
  • vscode
  • Android Stuido

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
원쥬

원주는 공부중

[Android Studio] 영화 API를 이용한 실습
Android

[Android Studio] 영화 API를 이용한 실습

2022. 7. 18. 11:44

 

Json 실습

영화 박스오피스 App

영화진흥위원회 DATA 가져오기

 

영화진흥위원회 오픈API 서비스 바로가기

 

영화진흥위원회 오픈API

제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다.

www.kobis.or.kr

원하는 정보를 가져오자

나는 일별 박스오피스 API 서비스를 이용했다.

맨 하단 응답 예시에서 원하는 데이터 형태의 url을 복사한 후 주소창에 입력 해 보면 

json 형태의 데이터를 확인할 수 있다.

날짜를 변경하고 싶다면 url 맨 뒤 날짜를 변경해주자

Json Parser Online 바로가기

 

Json Parser Online

 

json.parser.online.fr

링크에 접속 후 json 형태의 데이터를 넣어주면 좀 더 보기 편한 형태로 json 데이터를 확인할 수 있다.

 

 

안드로이드 스튜디오

 

이제 안드로이드 스튜디오로 접속 후 res -> layout에 새로운 레이아웃 파일을 만들어주자

 

새로만든 layout 설정

가운데 정렬 : gravity -> center

java 클래스 내에 movieVO 와 Movieadapter를 만들어준다

 

movieVO.java

- layout에 담을 데이터에 관한 vo

- 생성자, getter setter 만드는 단축키 : alt + insert

public class movieVO {

    // 영화 정보에 필요한 데이터들 정리하기
    private String rank;
    private String old_new;
    private String movie_title;
    private String count;
    private String open;

    public movieVO(String rank, String old_new, String movie_title, String count, String open) {
        this.rank = rank;
        this.old_new = old_new;
        this.movie_title = movie_title;
        this.count = count;
        this.open = open;
    }

    public String getRank() {
        return rank;
    }

    public void setRank(String rank) {
        this.rank = rank;
    }

    public String getOld_new() {
        return old_new;
    }

    public void setOld_new(String old_new) {
        this.old_new = old_new;
    }

    public String getMovie_title() {
        return movie_title;
    }

    public void setMovie_title(String movie_title) {
        this.movie_title = movie_title;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }

    public String getOpen() {
        return open;
    }

    public void setOpen(String open) {
        this.open = open;
    }
}

 

Movieadapter.java

BaseAdapter를 상속받는 adapter를 만들어 주자

package com.example.ex_0718;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;

public class Movieadapter extends BaseAdapter {

    // 1. Adapter 기능을 가질 수 있는 Movie Adapter 클래스 만들기
    // - 필수적으로 구현해야 하는 메소드들 불러올 수 있도록
    private Context context;
    private int layout;
    private ArrayList<movieVO> dataset;

    // 2. Adapter에 필요한 객체 선언
    // - 어플의 정보를 담을 수 있는 객체, 레이아웃을 담기 위한 객체, 데이터셋을 담기위한 객체
    // - 레이아웃 템플릿을 xml -> view타입으로 변환이 가능한 객체
    private LayoutInflater inflater;

    public Movieadapter(Context context, int layout, ArrayList<movieVO> dataset) {
        this.context = context;
        this.layout = layout;
        this.dataset = dataset;

        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }



    @Override
    public int getCount() {
        return dataset.size();
    }

    @Override
    public Object getItem(int i) {
        return dataset.get(i);
    }

    @Override
    public long getItemId(int i) {
        // 0이라고 입력해도 상관 x
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        view = inflater.inflate(layout, null);

        TextView rank = view.findViewById(R.id.rank);
        TextView old_new = view.findViewById(R.id.old_new);
        TextView movie_title = view.findViewById(R.id.movie_title);
        TextView count = view.findViewById(R.id.count);
        TextView open = view.findViewById(R.id.open);

        rank.setText(dataset.get(i).getRank());
        old_new.setText(dataset.get(i).getOld_new());
        movie_title.setText(dataset.get(i).getMovie_title());
        count.setText(dataset.get(i).getCount());
        open.setText(dataset.get(i).getOpen());

        return view;
    }


}

Activity_main.xml

layout을 불러올 Activity_main에 btn과 llistview를 만들어준다

- 클릭 시 영화데이터 불러올 예정!

 

 

MainActivity.java

package com.example.ex_0718;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.Button;
import android.widget.ListView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    Button btn;
    ListView listView;

    // Volley 사용시 필요한 객체
    RequestQueue requestQueue; // 요청을 보내주는 객체
    StringRequest request; // 요청시 필요한 정보를 담아주는 객체

    // Adpater 연결 시 필요한 객체
    Movieadapter adapter;
    ArrayList<movieVO> dataset;

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

        btn = findViewById(R.id.btn);
        listView = findViewById(R.id.listview);

        requestQueue = Volley.newRequestQueue(getApplicationContext());
        dataset = new ArrayList<>();
        adapter = new Movieadapter(getApplicationContext(), R.layout.movie_item, dataset);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                request = new StringRequest(
                        Request.Method.GET,
                        "https://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=f5eef3421c602c6cb7ea224104795888&targetDt=20220717",
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                try {
                                    JSONObject json = new JSONObject(response);
                                    // 내가 가지고 오고싶은 key값 입력
                                    JSONObject json2 = json.getJSONObject("boxOfficeResult");
                                    JSONArray movies = json2.getJSONArray("dailyBoxOfficeList");

                                    for (int i = 0; i < movies.length(); i++) {
                                        JSONObject movie = (JSONObject) movies.get(i);
                                        Log.d("checK", movie.getString("movieNm"));
                                        String rank = movie.getString("rank");
                                        String old_new = movie.getString("rankOldAndNew");
                                        String movie_title = movie.getString("movieNm");
                                        String count = movie.getString("audiAcc");
                                        String open = movie.getString("openDt");

                                        dataset.add(new movieVO(rank, old_new,movie_title,count,open));
                                    } // for문 종료

                                    listView.setAdapter(adapter);

                                    // JSONObject data = json.getJSONObject("boxOfficeResult").getJSONArray("dailyBoxOfficeList")

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }


                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Log.e("error", error.toString());
                            }
                        }

                );

                requestQueue.add(request);
            }
        });


    }
}

 

짠 완성

 

저작자표시 (새창열림)

'Android' 카테고리의 다른 글

[Android Studio] 안드로이드 스튜디오 Event 실습 02  (0) 2022.07.22
[Android Studio] Volley 사용하기 & Volley 예제/ 통신하기  (0) 2022.07.15
[Android Studio] 안드로이드 스튜디오 Event & Event 실습  (0) 2022.07.08
[Android Studio] Layout이란? Layout 기본예제  (0) 2022.07.07
[Android Studio] 안드로이드 스튜디오 프로젝트 만들기 & 기본 예제  (0) 2022.07.07
    원쥬
    원쥬
    Git : https://github.com/wonjuju/

    티스토리툴바