تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ بهروز
برگشت ندادن سایز لیست
پوریا شفیعی حل شده توسط پوریا شفیعی

با سلام و وقت بخیر

زمانی که ریکوست میزنم به همان لینک که استاد دادن  و ریکوست برمیگرده و داده رو ست میکنم لیست که تعریف میکنم میخوام سایز لیست رو بگیرم با ارور مواجه میشم و در  ریسایکلو نمایش داده نمیشه  

org.json.JSONException: Index 1811 out of range [0..1811)

اکسیپشن میده نمیدونم چرا ؟ 

 

میخواستم از سایت انلاین که هس برای ریکوست با جیسون مثل https://jsonlint.com/ چطور ساختنه و بصورت رایگان اجرا میشه ممنون میشم راهنمایی کنید ؟

 

 

سلام وقت بخیر بهروز جان

 

احتمالا جایی که حلقه for رو زدی در قسمت شرط جایی رو اشتباه تایپ کردی 

کد مربوطه رو ارسال کن تا این مورد رو بررسی کنم و راهنمایی بهتری داشته باشم

پوریا شفیعی ۱۵ خرداد ۱۴۰۰، ۲۱:۰۲

سلام پوریا جان 

این کد mainActivity :


public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private RequestQueue requestQueue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        View fabAddItemStudents = findViewById(R.id.fab_main_students);
        fabAddItemStudents.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,AddNewStudentsActivity.class));
            }
        });
        StringRequest request = new StringRequest(Request.Method.GET,
               "http://expertdevelopers.ir/api/v1/experts/student" , new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
//              Log.i(TAG, "onResponse: " + response);
                try {
                List<Students> studentsList = new ArrayList<>();
                JSONArray jsonArrayAll = new JSONArray(response);
                for (int i = 0; i < response.length(); i++) {
                    Students students = new Students();
                   JSONObject jsonObjectItem = jsonArrayAll.getJSONObject(i);
                        students.setId(jsonObjectItem.getInt("id"));
                        students.setFirstName(jsonObjectItem.getString("first_name"));
                        students.setLastName(jsonObjectItem.getString("last_name"));
                        students.setCourse(jsonObjectItem.getString("course"));
                        students.setScore(jsonObjectItem.getInt("score"));
                  //  String date= jsonObjectItem.getString("created_at").substring(0,jsonObjectItem.getString("created_at").indexOf(" "));
                        students.setCreateDate(jsonObjectItem.getString("created_at"));
                        studentsList.add(students);
                    }
                    Log.i(TAG, "onResponse: "+studentsList.size());
                    RecyclerView recyclerView = findViewById(R.id.recycler_view_main_students);
                    recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,RecyclerView.VERTICAL,false));
                    recyclerView.setAdapter(new StudentAdapter(studentsList));
                }catch (JSONException e){
                    Log.e(TAG, "onResponse: " +e.toString() );
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "onErrorResponse: " +error.toString() );
            }
        });
        request.setTag(TAG);
        request.setRetryPolicy(new DefaultRetryPolicy(10000,3,2));
        requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(request);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        requestQueue.cancelAll(TAG);
    }
}

 

 

 

بهروز ۱۵ خرداد ۱۴۰۰، ۲۱:۰۸

سلام مجدد

بهروز جان پیشنهاد میکنم نام گذاری‌ها رو حتما حتما طبق ویدیو‌ها انجام بدی چرا که این مورد باعث میشه نام گذاری صحیح ملکه ذهن بشه و در اینده در شرکت‌ها به مشکل نخوری 

مثلا جمع بستن نام مدل روش درستی نیست و استاندارد هست جمع بسته نشود مثال صحیح: Student 

مورد دوم چون در حین اموزش هستین ممکن هست تفاوت در نام گذاری‌ها باعث شود که مشکلات سخت‌تر پیدا شود.

 

اما بریم سراغ مشکل : توی حلقه مروبطه for (int i = ۰; i < response.length(); i++) به اشتباه همونطور که در تاپیک بالا گفته بودم شرط حلقه به اشتباه نوشته شده.

که درستش خواهد شد :

for (int i = 0; i < jsonArrayAll.length(); i++)

 

بهترین پاسخ
پوریا شفیعی ۱۶ خرداد ۱۴۰۰، ۰۹:۴۲