با سلام و وقت بخیر
زمانی که ریکوست میزنم به همان لینک که استاد دادن و ریکوست برمیگرده و داده رو ست میکنم لیست که تعریف میکنم میخوام سایز لیست رو بگیرم با ارور مواجه میشم و در ریسایکلو نمایش داده نمیشه
org.json.JSONException: Index 1811 out of range [0..1811)
اکسیپشن میده نمیدونم چرا ؟
میخواستم از سایت انلاین که هس برای ریکوست با جیسون مثل https://jsonlint.com/ چطور ساختنه و بصورت رایگان اجرا میشه ممنون میشم راهنمایی کنید ؟
سلام مجدد
بهروز جان پیشنهاد میکنم نام گذاری ها رو حتما حتما طبق ویدیو ها انجام بدی چرا که این مورد باعث میشه نام گذاری صحیح ملکه ذهن بشه و در اینده در شرکت ها به مشکل نخوری
مثلا جمع بستن نام مدل روش درستی نیست و استاندارد هست جمع بسته نشود مثال صحیح: Student
مورد دوم چون در حین اموزش هستین ممکن هست تفاوت در نام گذاری ها باعث شود که مشکلات سخت تر پیدا شود.
اما بریم سراغ مشکل : توی حلقه مروبطه for (int i = ۰; i < response.length(); i++) به اشتباه همونطور که در تاپیک بالا گفته بودم شرط حلقه به اشتباه نوشته شده.
که درستش خواهد شد :
for (int i = 0; i < jsonArrayAll.length(); i++)
سلام وقت بخیر بهروز جان
احتمالا جایی که حلقه 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);
}
}