💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ یوسف محمدیانی
مشکل در گرفتن تعداد آیتم‌های بیشتر از 10 در volly
جامعه جاوا (اندروید) ایجاد شده در ۰۷ فروردین ۱۳۹۹

سلام خدمت استاد عزیز

من موقع نمایش اطلاعات دریافتی از 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);

 

یوسف محمدیانی ۰۸ فروردین ۱۳۹۹، ۰۶:۰۲