import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
interface ApiInterface {
@POST("doctorCategories.php")
Call<List<DoctorModel>> getDoctorModel();
}
Вот главный вызов
...
mport androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class DoctorListRecycler extends AppCompatActivity {
DoctorAdapter retrofitAdapter;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doctor_list_recycler);
fetchJSON();
}
private void fetchJSON(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://svinothadapitest/doctorpat/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiInterface api = retrofit.create(ApiInterface.class);
Call<List<DoctorModel>> call = api.getDoctorModel();
call.enqueue(new Callback<List<DoctorModel>>() {
@Override
public void onResponse(Call<List<DoctorModel>> call, Response<List<DoctorModel>> response) {
Log.i("Responsestring", response.body().toString());
Toast.makeText(DoctorListRecycler.this, "Hi" +call, Toast.LENGTH_SHORT).show();
if (response.isSuccessful()) {
if (response.body() != null) {
Toast.makeText(DoctorListRecycler.this, "Hi", Toast.LENGTH_SHORT).show();
Log.i("onSuccess", response.body().toString());
String jsonresponse = response.body().toString();
writeRecycler(jsonresponse);
} else {
Log.i("onEmptyResponse", "Returned empty response");//Toast.makeText(getContext(),"Nothing returned",Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onFailure(Call<List<DoctorModel>> call, Throwable t) {
Toast.makeText(DoctorListRecycler.this, "Failure Server", Toast.LENGTH_SHORT).show();
}
});
}
private void writeRecycler(String response){
try {
//getting the whole json object from the response
JSONObject obj = new JSONObject(response);
// if(obj.optString("status").equals("true")){
ArrayList<DoctorModel> modelRecyclerArrayList = new ArrayList<>();
JSONArray dataArray = obj.getJSONArray("data");
for (int i = 0; i < dataArray.length(); i++) {
DoctorModel modelRecycler = new DoctorModel();
JSONObject dataobj = dataArray.getJSONObject(i);
// modelRecycler.setImgURL(dataobj.getString("imgURL"));
modelRecycler.setName(dataobj.getString("Name"));
modelRecycler.setSpecialist(dataobj.getString("Dermatologist"));
modelRecycler.setAddress(dataobj.getString("Address"));
modelRecyclerArrayList.add(modelRecycler);
}
retrofitAdapter = new DoctorAdapter(this,modelRecyclerArrayList);
recyclerView.setAdapter(retrofitAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false));
//}else {
// Toast.makeText(DoctorListRecycler.this, obj.optString("message")+"", Toast.LENGTH_SHORT).show();
//}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
...
Класс Pojo
...
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class DoctorModel {
@SerializedName("sno")
private String sno;
@SerializedName("Doctorid")
private String Doctorid;
@SerializedName("Name")
private String Name;
@SerializedName("Password")
private String Password;
@SerializedName("mobileno")
private String mobileno;
@SerializedName("Specialist")
private String Specialist;
@SerializedName("Experience")
private String Experience;
@SerializedName("Address")
private String Address;
@SerializedName("rating")
private String rating;
public DoctorModel() {
}
public DoctorModel(String name, String specialist, String address, String rating) {
Name = name;
Specialist = specialist;
Address = address;
this.rating = rating;
}
public DoctorModel(String sno, String doctorid, String name, String password, String mobileno, String specialist, String experience, String address, String rating) {
this.sno = sno;
Doctorid = doctorid;
Name = name;
Password = password;
this.mobileno = mobileno;
Specialist = specialist;
Experience = experience;
Address = address;
this.rating = rating;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getDoctorid() {
return Doctorid;
}
public void setDoctorid(String doctorid) {
Doctorid = doctorid;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public String getMobileno() {
return mobileno;
}
public void setMobileno(String mobileno) {
this.mobileno = mobileno;
}
public String getSpecialist() {
return Specialist;
}
public void setSpecialist(String specialist) {
Specialist = specialist;
}
public String getExperience() {
return Experience;
}
public void setExperience(String experience) {
Experience = experience;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
}
...
Класс адаптера ...
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class DoctorAdapter extends RecyclerView.Adapter<DoctorAdapter.MyViewHolder> {
private LayoutInflater inflater;
private ArrayList<DoctorModel> dataModelArrayList;
public DoctorAdapter(Context ctx, ArrayList<DoctorModel> dataModelArrayList) {
inflater = LayoutInflater.from(ctx);
this.dataModelArrayList = dataModelArrayList;
}
@Override
public DoctorAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_doctor, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(DoctorAdapter.MyViewHolder holder, int position) {
//Picasso.get().load(dataModelArrayList.get(position).getImgURL()).into(holder.iv);
holder.name.setText(dataModelArrayList.get(position).getName());
holder.Specialist.setText(dataModelArrayList.get(position).getSpecialist());
holder.address.setText(dataModelArrayList.get(position).getAddress());
holder.rating.setText(dataModelArrayList.get(position).getRating());
}
@Override
public int getItemCount() {
return dataModelArrayList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView name, Specialist, address, rating;
//ImageView iv;
public MyViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
Specialist = (TextView) itemView.findViewById(R.id.Specialist);
address = (TextView) itemView.findViewById(R.id.address);
rating = (TextView) itemView.findViewById(R.id.rating);
//iv = (ImageView) itemView.findViewById(R.id.iv);
}
}
}
...
json вывод ...
{
"data": [
{
"sno": "1",
"Doctorid": "200",
"Name": "Rai A",
"Password": "1234",
"mobileno": "9500012758",
"Specialist": "Dermatologist",
"Experience": "38",
"Address": "21/22 Greams Lane, \nThousand Lights, Off Greams Ro",
"rating": "4"
},
{
"sno": "2",
"Doctorid": "201",
"Name": "Shraa M",
"Password": "3242",
"mobileno": "9962222923",
"Specialist": "Diabetologist",
"Experience": "45",
"Address": "No. 21, Greams Lane,Off, Chennai",
"rating": "5"
}]
}
...
Любой может помочь мне, что я получаю сообщение onFailure каждый раз, когда я устанавливаю соединение ответа в модификации. Я пытаюсь исправить эту ошибку за последние четыре часа, но я не смог ее найти ... Пожалуйста, помогите мне ...... Заранее спасибо