android Volley + Gson 데이터전달에대하여 문의드립니다
조회수 981회
ArrayList<MovieDetailItem> movieDetailItems;
ArrayList<MovieSimpleItem> movieItems;
MoiveAdapter moiveAdapter;
ViewGroup rootView;
MovieInfo movieInfo;
String title;
public View onCreateView(@NonNull LayoutLayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState )
rootView = (ViewGroup) inflater.inflate(R.layout.moviepager, container, false);
ViewPager viewpager = rootView.findViewById(R.id.moviepager);
if (AppHelper.requestQueue == null) {
AppHelper.requestQueue = Volley.newRequestQueue(getContext());
}
requestMovieList();
movieItems = new ArrayList<>();
movieItems.add(new MovieSimpleItem(R.drawable.image1, title));
movieItems.add(new MovieSimpleItem(R.drawable.image2, "1.군 도"));
movieItems.add(new MovieSimpleItem(R.drawable.image3, "1.군 도"));
movieItems.add(new MovieSimpleItem(R.drawable.image4, "1.군 도"));
movieItems.add(new MovieSimpleItem(R.drawable.image5, "1.군 도"));
return rootView;
}
public void requestMovieList() {
String url = "http://" + AppHelper.host + ":" + AppHelper.port + "/movie/readMovieList";
StringRequest request = new StringRequest(
Request.Method.GET,
url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response != null) {
processResponse(response);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.getMessage();
}
}
);
request.setShouldCache(false);
AppHelper.requestQueue.add(request);
}
public void processResponse(String response) {
Gson gson = new Gson();
ResponseInfo info = gson.fromJson(response, ResponseInfo.class);
if (info.code == 200) {
MovieList movieList = gson.fromJson(response, MovieList.class);
if(movieList != null) {
movieInfo = movieList.result.get(0);
title = movieInfo.title;
}
}
}
현재 상황은 이렇습니다
Volley + Gson 은 MainActivity 가 아닌 MoviePager 라는 Fragment 에 선언 정의 되어있습니다 Volley로 응답을 받아 processReponse(Strint response) 메소드에 response 를
매개변수로 넣어줍니다
받은 response 을 Gson 이용하여 자바객체로 변환시켜줍니다 변환시켜준 자바객체를 필드로 선언되어있는 String title 에 대입하고있습니다(title = movieInfo.title);
여기서 문제점이 발생합니다
Log 를 찍어보면 processReponse(Strint response) 에서는 문제없이 잘 찍힙니다
다만 movieInfo.title 값을 대입시킨 String title 값을
movieItems.add(new MovieSimpleItem(R.drawable.image1, title));
이런식으로 대입해서 Bundle을 이용해 다른 Fragment로 데이터를 넘겨주려고하면 데이터가 안넘어갑니다
번들로 넘길때는 bundle.putSerializable 를 사용하고있습니다
processReponse(Strint response) 메소드에서는 전혀문제없던게
ArrayList에 대입해서 Bundle로 데이터를 넘기려고하면 왜 문제가 생기는지 궁금합니다
코드가 더 필요하다면 바로 올리겠습니다 이문제로 오랫동안고민하고있어서 정말 간절합니다
댓글 입력