Retrofit2 Api Call Error не показывает результат в представлении Recycler - PullRequest
0 голосов
/ 26 сентября 2018

Это API

 INPUT:
        center_id:4
                tabID:952888062222222
        patient_search: 98

  OUTPUT:
{
    "status": true,
    "result": [
        {
            "patient_id": "3",
            "gen_patient_id": "pmhsola00003",
            "first_name": "Sama",
            "last_name": "Patil",
            "p_mobile": "2398322323",
            "aadhaar_number": "4561221211212",
            "center_id": "4"
        }
],
    "message": "Patient searched successfully!"
}

Класс модели

public class SearchModel {


public SearchModel(String patient_id, String gen_patient_id, String first_name, String last_name, String p_mobile, String aadhaar_number, String center_id) {
    this.patient_id = patient_id;
    this.gen_patient_id = gen_patient_id;
    this.first_name = first_name;
    this.last_name = last_name;
    this.p_mobile = p_mobile;
    this.aadhaar_number = aadhaar_number;
    this.center_id = center_id;
}

private String patient_id;

public String getPatientId() { return this.patient_id; }

public void setPatientId(String patient_id) { this.patient_id = patient_id; }

private String gen_patient_id;

public String getGenPatientId() { return this.gen_patient_id; }

public void setGenPatientId(String gen_patient_id) { this.gen_patient_id = gen_patient_id; }

private String first_name;

public String getFirstName() { return this.first_name; }

public void setFirstName(String first_name) { this.first_name = first_name; }

private String last_name;

public String getLastName() { return this.last_name; }

public void setLastName(String last_name) { this.last_name = last_name; }

private String p_mobile;

public String getPMobile() { return this.p_mobile; }

public void setPMobile(String p_mobile) { this.p_mobile = p_mobile; }

private String aadhaar_number;

public String getAadhaarNumber() { return this.aadhaar_number; }

public void setAadhaarNumber(String aadhaar_number) { this.aadhaar_number = aadhaar_number; }

private String center_id;

public String getCenterId() { return this.center_id; }

public void setCenterId(String center_id) { this.center_id = center_id; }



@Override
public String toString()
{
    return "ClassPojo [first_name = "+first_name+", aadhaar_number = "+aadhaar_number+", last_name = "+last_name+", patient_id = "+patient_id+", center_id = "+center_id+", p_mobile = "+p_mobile+", gen_patient_id = "+gen_patient_id+"]";
}

}

Результат Модель класса

public class Result {


private SearchModel[] result;

public SearchModel[] getResult() {
    return result;
}

public void setResult(SearchModel[] result) {
    this.result = result;
}

}

Адаптер My Recycler

 public class PatientSearchAdapter extends 
RecyclerView.Adapter<PatientSearchAdapter.ViewHolder>  {
private ArrayList<SearchModel> searchList;
private Context context;

public PatientSearchAdapter(ArrayList<SearchModel> searchList){
    this.searchList = searchList;
}

@Override
public PatientSearchAdapter.ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_list_row_new,parent,false);
    PatientSearchAdapter.ViewHolder viewHolder = new PatientSearchAdapter.ViewHolder(view);
    return viewHolder;
}


@Override
public void onBindViewHolder(PatientSearchAdapter.ViewHolder holder, final int position) {

    holder.p_name_first.setText( (searchList.get(position).getFirstName()).substring(0,1).toUpperCase() + (searchList.get(position).getFirstName()).substring(1));
    holder.p_name_last.setText( (searchList.get(position).getLastName()).substring(0,1).toUpperCase() + (searchList.get(position).getLastName()).substring(1));
    holder.p_mobile.setText(searchList.get(position).getPMobile());
    holder.p_Id.setText(searchList.get(position).getGenPatientId().toUpperCase());


    holder.view_history.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Context context = v.getContext();
            Intent intent = new Intent(context, ViewPatientActivity.class);
            context.startActivity(intent);

        }
    });

    holder.take_test.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Context context = v.getContext();
            Intent intent = new Intent(context, HealthServicesActivity.class);
            context.startActivity(intent);
        }
    });

}



@Override
public int getItemCount() {
    return searchList.size();
}



public class ViewHolder extends RecyclerView.ViewHolder {

    TextView p_name_first,p_mobile,p_Id,p_name_last;

    Button take_test;
    TextView view_history;

    public ViewHolder(View v) {
        super(v);


        p_name_first = (TextView) v.findViewById(R.id.ppatient_name);
        p_name_last = (TextView) v.findViewById(R.id.ppatient_last_name);
        p_mobile = (TextView) v.findViewById(R.id.pmobile_number);
        p_Id=(TextView) v.findViewById(R.id.pp_id);
        view_history=(TextView) v.findViewById(R.id.pview_text_1);
        take_test=(Button) v.findViewById(R.id.ptake_test_button);


    }
}
 }

Мой фрагмент

public class PatientListFragment extends Fragment implements 
View.OnClickListener {

View view;

@BindView(R.id.search_text)
EditText searchText;
@BindView(R.id.item_search_click)
ImageButton saerchButton;



private ProgressBar progressBar;

Api webService = ServiceGenerator.getApi();

SharePreferenceManager<LoginModel> sharePreferenceManager;

private PatientSearchAdapter mSearchAdapter;
@BindView(R.id.recycler_patient_search_list)
RecyclerView recyclerViewOnSearch;
ArrayList<SearchModel> searchList = new ArrayList<SearchModel>();




public PatientListFragment() {
    // Required empty public constructor

}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view= inflater.inflate(R.layout.fragment_patient_list, container, false);
    ButterKnife.bind(this,view);




    sharePreferenceManager = new SharePreferenceManager<>(getActivity());

    progressBar =(ProgressBar) view.findViewById(R.id.progress_bar);

   /* progressDialog = new ProgressDialog(getActivity());
    progressDialog.setMessage("Please Wait...");
    progressDialog.setCanceledOnTouchOutside(false);*/


    EditText searchView = (EditText) view.findViewById(R.id.search_text);

initialViewsForSearch();



    return view;

}


    private void initialViewsForSearch() {
    recyclerViewOnSearch.setHasFixedSize(true);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
    recyclerViewOnSearch.setLayoutManager(layoutManager);



@Override
public void onClick(View v) {

    if (NetworkUtils.isNetworkAvailableToastIfNot(getActivity())) {
        getPayientSearchListOnline(
                sharePreferenceManager.getUserLoginData(LoginModel.class).getResult().getCenterId(),
                sharePreferenceManager.getUserLoginData(LoginModel.class).getResult().getTabID(),
                ComponentUtils.getInputStringFromView(searchText));

    }

}

    saerchButton.setOnClickListener(this);
}

/**
 * Searching For Patient List
 * @param centerId
 * @param tabID
 * @param searchtext
 */
    private void getPayientSearchListOnline(String centerId, String tabID,String searchtext){

    progressBar.setVisibility(View.VISIBLE);
    Call<Result> profileModelCall = webService.getPatientSearchList(getMap(centerId,tabID,searchtext));
    profileModelCall.enqueue(new Callback<Result>() {
        @Override
        public void onResponse(Call<Result> call, Response<Result> response) {
            if (response.isSuccessful()) {
                //if (response.body().isStatus()) {
                recyclerView.setVisibility(View.GONE);


                Result jsonResponse = response.body();
                searchList = new ArrayList<>(Arrays.asList(jsonResponse.getResult()));
                mSearchAdapter = new PatientSearchAdapter(searchList);
                recyclerViewOnSearch.setAdapter(mSearchAdapter);


            } else {
                APIError apiError = ErrorUtils.parseError(response);

                Toast.makeText(context, ""+ apiError.message(), Toast.LENGTH_SHORT).show();
            }


            if (progressBar.isEnabled())
                progressBar.setVisibility(View.INVISIBLE);
                progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onFailure(Call<Result> call, Throwable t) {

            Toasty.error(getActivity(), "Please Try Again", Toast.LENGTH_SHORT, true).show();
            if (progressBar.isEnabled())
                progressBar.setVisibility(View.INVISIBLE);
                progressBar.setVisibility(View.GONE);
        }
    });
}


   /* *
   * preparing Map data with param data
   */
private Map<String, RequestBody> getMap(String centerId, String tabId, String searchText) {
    //All the String parameters, you have to put like
    Map<String, RequestBody> map = new HashMap<>();

    if (sharePreferenceManager != null && sharePreferenceManager.isUserLogin())

        map.put("center_id", toRequestBody(centerId));
        map.put("tabID", toRequestBody(tabId));
        map.put("patient_search", toRequestBody(searchText));




    return map;
}

/**
 * This method  converts String to RequestBody
 */
public static RequestBody toRequestBody(String value) {

    return RequestBody.create(MediaType.parse("multipart/form-data"), value);


}

Интерфейс API-вызовов

@Multipart   
@POST(WebServices.GET_SEARCH_LIST)    
Call<Result> getPatientSearchList(@PartMap Map<String, RequestBody> params);

Что я пытаюсь сделать здесь, я беру 1отредактируйте текст, где я помещаю число для ввода, отправляя centerid и tabID в качестве параметра, и для этого я делаю Api Calling с использованием Retrofit.но моя проблема в том, что всякий раз, когда он переходит в публичный void onResponse (Call call, Response response) {он выходит оттуда и переходит в сбой, и я не получаю результат после нажатия кнопки. Это ничего не показывает мне.

...