마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

메서드의 반환이 제대로 되질 않아요 ㅠㅠ 도와주세요 고수님들

0 추천
private ArrayList<Post> makeMyPageRequest(Session session) {
 
final ArrayList<Post> myPost = new ArrayList<Post>();
String requestID = "me";
String graphPath=requestID+"/likes";
 
Bundle params = new Bundle();
params.putInt("limit", 100);
 
new Request(session, graphPath, params, HttpMethod.GET, new Request.Callback() {
 
@Override
public void onCompleted(Response response) {
// TODO Auto-generated method stub
 
try {
 
GraphObject go = response.getGraphObject();
JSONObject jo = go.getInnerJSONObject();
JSONArray jarray = jo.getJSONArray("data");
 
for (int i = 0; i < jarray.length(); i++) {
 
JSONObject o = jarray.getJSONObject(i);
Post p=new Post();
 
p.setId(o.getString("id"));
p.setName(o.getString("name"));
myPost.add(p);
 
}
 
 
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
//이 부분은 제대로 나옴!!
Log.i("Mytag", myPost.toString());
}
 
 
}).executeAsync();
 
// 요 아래꺼엔 myPost가 비어있음!!! ㅠㅠ
// Log.i("Mytag",myPost.toString());
return myPost;
 
}
 
 
=========================================================
 
위에서 보시면 makeMyPostRequest라는 메서드를 통해
ArrayList<Post> 형태의 myPost를 리턴받고 싶습니다 ㅠㅠ
그런데 onCompleted 내에서는 myPost에 데이터들이 잘 들어가는데
마지막에 makePostRequest에서 리턴해주는 myPost에서는 데이터가 하나도 안 들어가 있습니다 ㅠㅠ
이거 이유가 뭔지 좀 알려주시면 정말 감사합니다 !! ㅠㅠ
꼬진인력거 (320 포인트) 님이 2014년 8월 25일 질문

1개의 답변

+1 추천
 
채택된 답변
executeAsync로 실행시켰으니 당연히 return myPost; 부분에서는 제대로된 값이 들어있지 않습니다.

onCompleted안에서 결과값을 받아 처리하도록 수정하세요.
익명사용자 님이 2014년 8월 25일 답변
꼬진인력거님이 2014년 8월 26일 채택됨
request를 비동기식으로 발생시켜서 보내는거라 return myPost에 값이 들어가지 않는다는 말씀이신가요!? 저는 어떻게 해서든 그 안에서 받아오는 데이터를 제 변수에 담아서 끄집어내고 싶은데 방법이 없을까요?? ㅠㅠ
...