как получить ограниченные данные с помощью api при модернизации

#android #retrofit2

#Android #retrofit2

Вопрос:

Я могу извлекать данные с помощью retrofit в Android и могу настроить их просмотр в recyclerView с помощью адаптера. но дело в том, что я не хочу извлекать целые данные из моего api, я хочу удалить некоторые данные из моего api с помощью java, которые не должны быть видны в recyclerview.

Android studio, java

 private void getSearchProduct(String str_search_text, String page_no, String limit, final String catid) {
    final ProgressDialog progressDialog = new ProgressDialog (this);
    if (limit.equalsIgnoreCase ("")) {
        progressDialog.show ();
        progressDialog.setMessage ("Please wait...");
        progressDialog.setCancelable (false);
    } else {
        progressDialog.setMessage ("Please wait...");
        progressDialog.setCancelable (false);
    }
    if (page_no.equalsIgnoreCase ("")) {
        pagenonew = "";
    } else {
        pagenonew = page_no;
    }
    Log.e (TAG, "getSearchProduct: catid..............."   catid);
    if (catid.equals ("")) {
        category_id = catid;
        Log.e (TAG, "getSearchProduct: catid"   catid);
    }
    apiService = ApiUtils.getAPIService ();
    apiService.getSearchProduct (""   latitude, ""   longitude, CustomerID, str_search_text, pagenonew, catid).enqueue (new Callback<Search_Product_Model> () {
        @Override
        public void onResponse(Call<Search_Product_Model> call, Response<Search_Product_Model> response) {

            if (response.isSuccessful ()) {
                int status = response.body ().getStatus ();
                String meg = response.body ().getMsg ();
                if (status == 1) {
                    serach_product_lists.clear ();
                    serach_product_lists = response.body ().getProductList ();
                    /*  categoryID = response.body ().getCategory_id ();
                    Log.e (TAG, "categoryID: categoryID......"   categoryID);*/
                    Search_Product_Adapter adapter = new Search_Product_Adapter (SearchProduct_Fragment.this, serach_product_lists);
                    recycler_views_category_offerzone.setAdapter (adapter);
                    txt_noproduct.setVisibility (View.GONE);

                    recycler_views_category_offerzone.setVisibility (View.VISIBLE);
                } else {
                    txt_noproduct.setVisibility (View.VISIBLE);
                    txt_noproduct.setText (meg);
                    recycler_views_category_offerzone.setVisibility (View.GONE);
                }
                progressDialog.dismiss ();
            } else {
                 progressDialog.dismiss ();
            }
        }
        @Override
        public void onFailure(Call<Search_Product_Model> call, Throwable t){
            progressDialog.dismiss ();
        }
    });
}
  

Комментарии:

1. удалите лишние элементы из файлов pojo

2. Просто создайте класс POJO с требуемыми ключами и удалите все ключи, которые вам не требуются. Это решит вашу проблему.

Ответ №1:

Я думаю, вам следует использовать RxJava в сочетании с Retrofit (они действительно удивительно работают вместе), у которого есть operator take, который позволяет вам выбирать, сколько результатов принимать

  Observable.just(1, 2, 3, 4, 5, 6, 7, 8)
              .take(4)
              .subscribe(new Subscriber<Integer>() {
            @Override
            public void onNext(Integer item) {
                System.out.println("Next: "   item);
            }

            @Override
            public void onError(Throwable error) {
                System.err.println("Error: "   error.getMessage());
            }

            @Override
            public void onCompleted() {
                System.out.println("Sequence complete.");
            }
        });
  

для получения дополнительной документации, пожалуйста, посмотрите на http://reactivex.io/documentation/operators/take.html

для объединения Retrofit и RxJavahttps://www.journaldev.com/20433/android-rxjava-retrofit

Ответ №2:

  1. Попросите вашего поставщика услуг не возвращать данные, которые вы не хотите извлекать.
  2. Просмотрите свой список данных, чтобы найти ненужные данные, затем удалите их.В виде следующих кодов!

    serach_product_lists = response.body ().getProductList ();
    for(data:serach_product_lists){
    if(//put your judge code here)
    serach_product_lists.remove(data)
    }