سلام
من کد ریکوست رو پیاده سازی کردم و الان میخوام لیست دانشجوها رو در recyclerview نمایش بدم ولی force close میگیرم و نفهمیدم مشکل از کجاست؟فقط وقتی آداپتر رو اضافه کردم این مشکل پیش اومده و ریکوستم مشکلی نداره
کسی اگه کمکم کنه ممنون میشم
کد کلاس main:
package com.sevenlearn.a7learnstudents;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Build;
import android.os.Bundle;
import android.util.EventLogTags;
import android.util.Log;
import android.widget.Toast;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Method;
import java.sql.Struct;
import java.util.ArrayList;
import java.util.List;
import javax.security.auth.login.LoginException;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);
StringRequest request = new StringRequest(Request.Method.GET, "http://expertdevelopers.ir/api/v1/experts/student",
new Response.Listener<String>() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onResponse(String response) {
// req.setRetryPolicy(new DefaultRetryPolicy(10000,3,2));
List<Student> students = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject studentJsonObject = jsonArray.getJSONObject(i);
Student student = new Student();
student.setId(studentJsonObject.getInt("id"));
student.setScore(studentJsonObject.getInt("score"));
student.setCourse(studentJsonObject.getString("course"));
student.setFirstName(studentJsonObject.getString("first_name"));
student.setLastName(studentJsonObject.getString("last_name"));
students.add(student);
}
Log.i(TAG, "onResponse: " + students.size());
RecyclerView recyclerView = findViewById(R.id.rv_student_main);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this, RecyclerView.VERTICAL, false));
recyclerView.setAdapter(new StudentAdapter(students));
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "onErrorResponse: "+error );
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(request);
}
}
کد کلاس adapter :
package com.sevenlearn.a7learnstudents;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.SudentViewHolder> {
private List<Student> students;
public StudentAdapter(List<Student> students) {
this.students = students;
}
@NonNull
@Override
public SudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new SudentViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_student,parent,false));
}
@Override
public void onBindViewHolder(@NonNull SudentViewHolder holder, int position) {
holder.bind(students.get(position));
}
@Override
public int getItemCount() {
return students.size();
}
public class SudentViewHolder extends RecyclerView.ViewHolder {
private TextView fullNameTv;
private TextView courseTv;
private TextView firstCharTv;
private TextView scoreTv;
public SudentViewHolder(@NonNull View itemView) {
super(itemView);
fullNameTv = itemView.findViewById(R.id.tv_student_fullName);
courseTv = itemView.findViewById(R.id.tv_student_course);
firstCharTv = itemView.findViewById(R.id.tv_student_first_character);
scoreTv = itemView.findViewById(R.id.tv_student_score);
}
public void bind(Student student){
fullNameTv.setText(student.getFirstName()+" "+student.getLastName());
courseTv.setText(student.getCourse());
firstCharTv.setText(student.getFirstName().substring(0,1));
scoreTv.setText(student.getScore());
}
}
}