Facebook API を使用していますが、ListView
データを表示するのに苦労しています。ListView
私のコードはフラグメントを使用し、ルートとしてを持つレイアウトを膨張させます。Pull To Refreshを有効にするためListView
に別のものにラップされます。Mark Murphy のEndless Adapterを使用できるように、アダプターもラッピングしています。フラグメントを作成する前にすべての Facebook データをロードすると、すべてが機能します。しかし、Facebook データを非同期で取得したら、空のフラグメントを作成してデータを入力したいと考えています。PullToRefreshListView
ListView
onComplete(Response response)
Facebookでコールバックメソッドを使っているのですが、なぜかメソッド外ではRequest
使えないようです。本当に単純なものが欠けているような気がします。コードは次のとおりです。setAdapter(adapter)
onCreateView()
JSONArray newsFeed;
View view;
ListView feedList;
PullToRefreshListView refreshFeedList;
Request initialFeedRequest = new Request(session, "me/home", null, HttpMethod.GET, new Request.Callback() {
@Override
public void onCompleted(Response response) {
Log.i("NewsFeed", "initial load onComplete");
Log.i("NewsFeed",response.toString());
responseObject = response.getGraphObject().getInnerJSONObject();
try {
newsFeed = responseObject.getJSONArray("data");
} catch (JSONException e) {
e.printStackTrace();
}
feedAdapter = new FeedAdapter(getActivity(), Space.newsFeed);
endlessAdapter = new EndlessFeed(feedAdapter);
feedList.setAdapter(endlessAdapter);
refreshFeedList.setOnRefreshListener(refreshListener);
nextPageRequest = response.getRequestForPagedResults(PagingDirection.NEXT);
String test = feedAdapter.getItem(0).toString();
Log.i("NewsFeed", "First Item: " + test);
}
});
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
view = inflater.inflate(R.layout.news_feed, container, false);
if(feedAdapter==null){
Log.i("NewsFeed", "executing Request");
initialFeedRequest.executeAsync();
}
else{
feedAdapter = new FeedAdapter(getActivity(), Space.newsFeed);
endlessAdapter = new EndlessFeed(feedAdapter);
feedList.setAdapter(endlessAdapter);
refreshFeedList.setOnRefreshListener(refreshListener);
}
refreshFeedList = (PullToRefreshListView) view.findViewById(R.id.feedList);
feedList = refreshFeedList.getRefreshableView();
feedList.setDividerHeight(0);
}