有三種類型的分頁用於在Facebook中獲取用戶照片,即基於光標的分頁,基於時間的分頁和基於偏移的分頁。在您的情況下,您可以按照您在query.for中詢問的基於偏移的分頁您可能需要在圖請求中包含offset
和limit
的屬性。因此,您可以通過初始化零開始offset
,然後通過limit
作爲100
。這意味着您將從0
到100
獲得記錄。 並注意,您可以根據請求獲取100
記錄。更清楚地說,我正在編寫一個用於提取相冊圖像URL的代碼示例。
// ArrayList for storing images URL
private ArrayList<String> albumImages= new ArrayList<>();
// Records offset value, initially zero
private int offset = 0;
// Records count would like to fetch per request
private int limit = 100;
private void getAlbumsImages(final String albumId, final int count, int offsetValue, int limitValue) {
offset = offsetValue;
limit = limitValue;
Bundle parameters = new Bundle();
parameters.putString("fields", "images");
parameters.putString("offset", String.valueOf(offset));
parameters.putString("limit", String.valueOf(limit));
/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/" + albumId + "/photos",
parameters,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
try {
if (response.getError() == null) {
JSONObject joMain = response.getJSONObject();
if (joMain.has("data")) {
JSONArray jaData = joMain.optJSONArray("data");
for (int i = 0; i < jaData.length(); i++)//Get no. of images
{
JSONObject joAlbum = jaData.getJSONObject(i);
JSONArray jaImages = joAlbum.getJSONArray("images");// get images Array in JSONArray format
if (jaImages.length() > 0) {
albumImages.add(jaImages.getJSONObject(0).getString("source"));
}
}
}
if (count > offset + limit) {
offset = offset + limit;
if (count - offset >= 100)
limit = 100;
else
limit = count - offset;
getFacebookImages(albumId, count, offset, limit);
}
} else {
Log.e("Error :", response.getError().toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
).executeAsync();
}
你必須做一個遞歸調用函數從專輯中你RecyclerView滾動正常獲取整張圖像或改變功能。
使用
getFacebookImages(mAlbumsId, mAlbumsImagecount, offset, limit);
https://developers.facebook.com/docs/graph-api/using-graph-api/#paging //用於支持分頁返回鏈接終點前進每個API響應/在迴應中落後;儘管我不確定是否可以將該URL直接傳遞給'GraphRequest',或者必須手動傳遞參數。 – CBroe