Android 如何在改造中使用api获取有限的数据

Android 如何在改造中使用api获取有限的数据,android,retrofit2,Android,Retrofit2,我可以在android中使用翻新获取数据,并可以使用适配器在回收视图中设置数据视图。但问题是我不想从api中获取全部数据,我想使用java从api中删除一些数据,这些数据在回收视图中不应该可见 Android studio,java private void getSearchProduct(String str_search_text, String page_no, String limit, final String catid) { final ProgressDialog pr

我可以在android中使用
翻新
获取数据,并可以使用适配器在
回收视图
中设置数据视图。但问题是我不想从api中获取全部数据,我想使用java从api中删除一些数据,这些数据在回收视图中不应该可见

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 ();
        }
    });
}
private void getSearchProduct(字符串str\u search\u文本、字符串页号、字符串限制、最终字符串catid){
final ProgressDialog ProgressDialog=新建ProgressDialog(此);
if(limit.equalsIgnoreCase(“”){
progressDialog.show();
progressDialog.setMessage(“请稍候…”);
progressDialog.setCancelable(false);
}否则{
progressDialog.setMessage(“请稍候…”);
progressDialog.setCancelable(false);
}
if(页码:相等信号案例(“”){
pagenonew=“”;
}否则{
pagenonew=页码;
}
Log.e(标签“getSearchProduct:catid…………”+catid);
if(catid.equals(“”){
类别id=catid;
Log.e(标签“getSearchProduct:catid”+catid);
}
apiService=ApiUtils.getAPIService();
apiService.getSearchProduct(“+”纬度“+”经度,CustomerID,str_search_text,pagenonew,catid)。排队(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
int status=response.body().getStatus();
字符串meg=response.body().getMsg();
如果(状态==1){
serach_product_list.clear();
serach_product_lists=response.body().getProductList();
/*categoryID=response.body().getCategory_id();
Log.e(标签“categoryID:categoryID……”+categoryID)*/
Search\u Product\u Adapter Adapter=新的Search\u Product\u适配器(SearchProduct\u Fragment.this,serach\u Product\u列表);
回收器\视图\类别\ offerzone.setAdapter(适配器);
txt_noproduct.setVisibility(View.GONE);
回收器\视图\类别\ offerzone.setVisibility(View.VISIBLE);
}否则{
txt_noproduct.setVisibility(View.VISIBLE);
txt_noproduct.setText(meg);
回收商\视图\类别\ offerzone.setVisibility(View.GONE);
}
progressDialog.disclose();
}否则{
progressDialog.disclose();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
progressDialog.disclose();
}
});
}

我认为您应该将RxJava与改造结合使用(它们真的协同工作得非常好),后者具有运算符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.");
            }
        });
可观察。仅(1,2,3,4,5,6,7,8)
.take(4)
.subscribe(新订户(){
@凌驾
public void onNext(整数项){
System.out.println(“下一步:+项);
}
@凌驾
公共无效onError(可丢弃错误){
System.err.println(“错误:+Error.getMessage());
}
@凌驾
未完成的公共无效(){
System.out.println(“序列完成”);
}
});
有关更多文档,请参阅

用于将改型和RxJAva结合起来

  • 询问您的服务提供商不要返回您不想获取的数据
  • 遍历您的数据列表,找到您不想要的数据,然后删除它们。如下代码所示

    serach_product_list=response.body().getProductList();
    用于(数据:serach_产品列表){
    如果(//把你的法官代码放在这里)
    serach_产品列表。删除(数据)
    }


  • 从pojo文件中删除额外的元素只需使用所需的键创建一个pojo类,并删除不需要的所有键。这会解决你的问题。