gpt4 book ai didi

java - 如何在 Java 中将 Facebook Graph api 的结果添加到数组列表中

转载 作者:行者123 更新时间:2023-12-01 19:36:21 24 4
gpt4 key购买 nike

我正在使用 Facebook 图形 API 来找出用户所在的页面。当查询返回一个 json 对象时,它有我需要的内容,但由于某种原因它不想添加到我的数组列表中。正确的值打印在 log.d 中,它似乎由于某种原因跳过了我的数组列表。有什么想法吗?

查找页面功能

private ArrayList<String> foundPages;
private JSONObject jsonObject;

public ArrayList<String> findPages()
{
accessToken = AccessToken.getCurrentAccessToken();
foundPages = new ArrayList<>();

GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"/me/accounts",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {

try {

jsonObject = response.getJSONObject();
for(int i=0; i < jsonObject.getJSONArray("data").length(); i++)
{
page = response.getJSONObject().getJSONArray("data").getJSONObject(i).getString("name");
Log.d("viewmodel",page);
foundPages.add(page);

}

} catch (JSONException e) {
e.printStackTrace();
}
}
});

request.executeAsync();


return foundPages;
}

最佳答案

有一个常见的方法来解决这个问题,那就是定义一个回调方法,在调用填充这些值之后,它将返回给你,就像这样(我的java很生锈,请忍受我...)

定义一个接口(interface):

 interface Callback{
void apiResponseCallback(ArrayList<Page> result);//whatever your model is, make the array of that type
}

然后,在正常的 findPages 方法中,将其更改为:

public void findPages(Callback callback) {
//
//
........
for(int i=0; i < jsonObject.getJSONArray("data").length(); i++)
{
page = response.getJSONObject().getJSONArray("data").getJSONObject(i).getString("name");
Log.d("viewmodel",page);
foundPages.add(page);

}
callback.apiResponseCallback(foundPages);//here we are returning the data when it is done
}

然后,当您调用 findPages

findPages(new Callback() {
@Override
public void apiResponseCallback(ArrayList<Page> result) {
here, this result parameter that comes through is your api call result to use, so result will be your populated pages to use.
}
});
}

为了完整性:

public void findPages(Callback callback)
{
accessToken = AccessToken.getCurrentAccessToken();
foundPages = new ArrayList<>();

GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"/me/accounts",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {

try {

jsonObject = response.getJSONObject();
for(int i=0; i < jsonObject.getJSONArray("data").length(); i++)
{
page = response.getJSONObject().getJSONArray("data").getJSONObject(i).getString("name");
Log.d("viewmodel",page);
foundPages.add(page);

}
callback.apiResponseCallback(foundPages);

} catch (JSONException e) {
e.printStackTrace();
}
}
});

request.executeAsync();
}

关于java - 如何在 Java 中将 Facebook Graph api 的结果添加到数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com