#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:
- Попросите вашего поставщика услуг не возвращать данные, которые вы не хотите извлекать.
-
Просмотрите свой список данных, чтобы найти ненужные данные, затем удалите их.В виде следующих кодов!
serach_product_lists = response.body ().getProductList ();
for(data:serach_product_lists){
if(//put your judge code here)
serach_product_lists.remove(data)
}