public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private MyRecyclerViewAdapter adapter;
ArrayList<Movie> movieList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
movieList = new ArrayList<Movie>();
// Asynctask - OKHttp
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
// LayoutManager
recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this,2));
}
// AsyncTask 는 UI를 담당하는 메인 스레드를 변경할수 없기 때문에
// 백그라운데에서 사용할수 있는 것이다 (스레드와 핸들러를 사용해서 UI 작업 처리
public class MyAsyncTask extends AsyncTask<String, Void, Movie[]>{
// 로딩중 표시
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute(){
super.onPreExecute();;
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("\t로딩중...");
progressDialog.show();
}
@Override
protected Movie[] doInBackground(String... strings) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.themoviedb.org/3/movie/550?api_key=99368e79321918606193e99722f395b9")
.build();
try{
Response response =client.newCall(request).execute();
Gson gson =new GsonBuilder().create();
JsonParser parser = new JsonParser();
JsonElement rootObject=parser.parse(response.body().charStream())
.getAsJsonObject().get("results");
Movie[] posts = gson.fromJson(rootObject, Movie[].class);
return posts;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Movie[] result){
super.onPostExecute(result);
progressDialog.dismiss();
// ArrayList에 차례대로 추가한다.
if(result.length>0){
for(Movie p:result){
movieList.add(p);
}
}
// 어뎁터 설정
adapter = new MyRecyclerViewAdapter(MainActivity.this, movieList);
recyclerView.setAdapter(adapter);
}
}
}
현재 영화 에매앱을 만들기 위해 theMovieDB 사이트에서 정보를 가져옵니다
하지만 앱을 실행시켜보면 앱이 바로 종료가 되고
rogcat을 확인해보면 31번줄인 setContentView(R.layout.activity_main); 에서 오류가 발생했다고 나옵니다.
왜 저기서 에러가 나는지부터해서 어떻게 수정해야할지 감을 못잡겠습니다...