سلام خدمت استاد عزیز
من موقع نمایش اطلاعات دریافتی از api تو recyclerview یک مشکلی دارم اونم اینه که اگر تعداد آیتم های دریافتی رو بیشتر از ۱۰ کنم(منظورم اینه که تعداد مثلا مقالات دریافتی رو در لینک api تغییر میدم)...مطالب در لیست نمایش داده نمیشن...
در صورتی که وقتی لینک رو به صورت مستقیم تو مرورگر باز می کنم هیچ مشکلی نداره ...
با این لینک ۱۰ مقاله سایت دریافت میشن
https://bartarleather.com/wp-json/wp/v۲/posts?_embed
اما با این لینک (که پست های موجود در فایل json به ۱۵ تا میرسن)دریافت نمیشن
https://bartarleather.com/wp-json/wp/v۲/posts?_embed&page=۱&per_page=۱۵
به نظرتون باید چه کار کرد؟
سلام یوسف جان
ایا دستی تعداد ایتم ها رو 10 میدین؟
یا با استفاده از listArray.length(); یا listArray,size(); تعداد ایتم ها رو به متد getItemCount میدین؟
خیلی ممنون از راهنماییتون آقا مهرداد و آقا پوریا عزیز
خداروشکر مشکل برطرف شد
بله من ارور response رو چک نکرده بودم...یک از key های آرایه json در بعضی از item ها مقدار داشت و در بعضی از item ها نداشت که با تعریف یک شرط تونستم مشکل رو برطرف کنم...
final StringRequest stringRequest = new StringRequest(Request.Method.GET,
"https://ahmadansari.com/wp-json/wp/v2/posts?_embed&page=1&per_page=80",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
avi.hide();
try {
JSONArray jsonArray = new JSONArray(response);
List<Post> posts = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject postItem = jsonArray.getJSONObject(i);
Post post = new Post();
post.setTitle(postItem.getJSONObject("title").getString("rendered"));
post.setContent(postItem.getJSONObject("excerpt").getString("rendered"));
post.setFullContent(postItem.getJSONObject("content").getString("rendered"));
post.setDate(postItem.getString("date"));
post.setCategory(postItem.getJSONObject("_embedded").getJSONArray("wp:term").getJSONArray(0).getJSONObject(0).getString("name"));
post.setAuthor(postItem.getJSONObject("_embedded").getJSONArray("author").getJSONObject(0).getString("name"));
JSONObject imageData = postItem.getJSONObject("_embedded");
//شرط رو به این صورت تعریف کردم!
if (imageData.has("wp:featuredmedia")){
post.setImgURl(
postItem.getJSONObject("_embedded")
.getJSONArray("wp:featuredmedia")
.getJSONObject(0)
.getJSONObject("media_details")
.getJSONObject("sizes")
.getJSONObject("thumbnail")
.getString("source_url")
);
post.setImageRulMain(
postItem.getJSONObject("_embedded")
.getJSONArray("wp:featuredmedia")
.getJSONObject(0)
.getJSONObject("media_details")
.getJSONObject("sizes")
.getJSONObject("full")
.getString("source_url")
);
}
post.setIdPost(postItem.getInt("id"));
posts.add(post);
}
RecyclerView recyclerView = findViewById(R.id.wrapperPostList);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this, RecyclerView.VERTICAL, false));
recyclerView.setAdapter(new PostListAdapter(posts));
Log.i(TAG, "onResponse: "+response);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "امکان اتصال وجود ندارد!", Toast.LENGTH_SHORT).show();
btnRefresh.setVisibility(View.VISIBLE);
Log.i(TAG, "onCatch: "+e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
avi.hide();
Toast.makeText(MainActivity.this, "امکان اتصال وجود ندارد!", Toast.LENGTH_SHORT).show();
Log.e(TAG, "onErrorResponse: " + error.toString());
btnRefresh.setVisibility(View.VISIBLE);
Log.i(TAG, "onErrorResponseMessage: "+error.toString());
}
});
final RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);