1

我正在尝试根据facebook-android-sdk中的示例实现一个 facebook 应用程序。我正在对其进行一些更改,但我对某些非常基本的东西感到困难。

我的主要活动显示了我附近的 facebook 位置。这就是 mainActivity.java 中的代码

private void getFBPlaces()
{
   fbObject.fetchPlaces();

   // NOW I want to fill my listview with the results.....
   // someting like
   placesList = (ListView) findViewById(R.id.places_list);
   placesList.setOnItemClickListener(Places.this);
   placesList.setAdapter(new PlacesListAdapter(Places.this));

}

这是来自 FBObject.java 的相关代码,请参阅 TODO

private void fetchPlaces() {
    /*
     * Source tag: fetch_places_tag
     */
    Bundle params = new Bundle();
    params.putString("type", "place");
    try {
        params.putString("center",
                location.getString("latitude") + "," + location.getString("longitude"));
    } catch (JSONException e) {
        showToast("No places fetched.");
        return;
    }
    params.putString("distance", "1000");
    Utility.mAsyncRunner.request("search", params, new placesRequestListener());
}

/*
 * Callback after places are fetched.
 */
public class placesRequestListener extends BaseRequestListener {

    @Override
    public void onComplete(final String response, final Object state) {
        Log.d("Facebook-FbAPIs", "Got response: " + response);
        dialog.dismiss();

        try {
            jsonArray = new JSONObject(response).getJSONArray("data");
            if (jsonArray == null) {
                showToast("Error: nearby places could not be fetched");
                return;
            }
        } catch (JSONException e) {
            showToast("Error: " + e.getMessage());
            return;
        }
        mHandler.post(new Runnable() {
            @Override
            public void run() {

                // TODO: I want to return the result to main activity
                .....
            }
        });

    }

有什么想法吗?谢谢

4

2 回答 2

0

我这样做的方法是将活动实例传递给 PlacesRequestListener,并在完整的回调中执行类似“activity.findViewById(R.id.places_list)”的操作来获取列表。从这里您可以设置适配器。当然,该方法需要在主线程上运行才能操作 UI

于 2012-10-20T15:11:33.853 回答
0

您应该考虑使用 Android SDK 的新 v3.0b。特别是,它有一个内置的地点选择器,可以帮助加速你在这里尝试做的事情。

您可以在http://developers.facebook.com/android找到它

于 2012-10-22T20:21:27.043 回答