//引用 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-6'
//布局 <com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/srl_fresh" android:layout_width="match_parent" android:layout_height="match_parent"> <com.scwang.smartrefresh.layout.header.ClassicsHeader android:layout_width="match_parent" android:layout_height="wrap_content" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/item02" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" android:fadingEdge="none" android:divider="@null" android:background="@color/text_gray01" android:listSelector="@color/text_white01"/> <com.scwang.smartrefresh.layout.footer.ClassicsFooter android:layout_width="match_parent" android:layout_height="wrap_content"/> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
private EditText item01; private RecyclerView item02; private int page = 1;//页数 private int limit = 10;//条数 private int limit01;//记录 总条数- 总以请求的条数 String Search = ""; GetDYListAdapter getDYListAdapter; GetDYListBean getDYListBean; List<GetDYListBean.DataBean> mDatas = new ArrayList<>(); SmartRefreshLayout srfresh; private Handler mHandler = new Handler(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_print_record); initView(); initData(); LinearLayoutManager layoutManager= new LinearLayoutManager(PrintRecordAcitivty.this); item02.setLayoutManager(layoutManager); getDYListAdapter = new GetDYListAdapter(PrintRecordAcitivty.this, mDatas); item02.setAdapter(getDYListAdapter); } private void initView() { item01 = findViewById(R.id.item01); srfresh = findViewById(R.id.srl_fresh); item02 = findViewById(R.id.item02); } private void initData() { getList(""); item01.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { if (i== EditorInfo.IME_ACTION_SEND ||(keyEvent!=null && keyEvent.getKeyCode()== KeyEvent.KEYCODE_ENTER)) { return true; } Search = item01.getText().toString().trim(); mDatas.clear(); getList(Search); return false; } }); } public void getList(String search){ Map map = new HashMap(); map.put("type","0"); map.put("page",page); map.put("limit",limit); map.put("condition",search);//模糊搜索条件 (name,address,type,trade,link,phone) Gson gson = new Gson(); final String json = gson.toJson(map); OkHttpUtils .postString() .url(UrlConfig.getDYList) .addHeader("uid", BasicData.uid +"") .addHeader("apiToken",BasicData.token) .addHeader("apiFlag", "2") .mediaType(MediaType.parse("application/json; charset=utf-8")) .content(json) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { e.printStackTrace(); Log.e("webresponse:", "err"); ToastUtil.showToast(PrintRecordAcitivty.this,"获取根据条件查询服务码,请检查网络"); } @Override public void onResponse(String response, int id) { Log.e("PatrolPlan-Http:", response + "z"); try { JSONObject object = new JSONObject(response); String status = object.getString("status"); int count = object.getInt("count");//总数 if (status.equals("1")) { getDYListBean = MyUtils.getGson().fromJson(response, GetDYListBean.class); // int count = getList.getData().size(); if (page == 1) { mDatas.clear(); } if (getDYListBean != null && getDYListBean.getData() != null && getDYListBean.getData().size() > 0) { mDatas.addAll(getDYListBean.getData()); Log.e("mDatas.size()",mDatas.size()+""); } getDYListAdapter.notifyDataSetChanged(); limit01 = mDatas.size(); aboutAapter(Search,count,mDatas.size()); }else if (status.equals("0")){ ToastUtil.showToast(PrintRecordAcitivty.this,object.getString("msg")); } }catch (JSONException e) { e.printStackTrace(); } } }); } public void aboutAapter(final String search, final int count, final int size) { srfresh.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(final RefreshLayout refreshlayout) { //延时展示,延时2秒 mHandler.postDelayed(new Runnable() { @Override public void run() { refreshlayout.finishRefresh(); } },100); } }); //加载 srfresh.setOnLoadMoreListener(new OnLoadMoreListener() { @Override public void onLoadMore(final RefreshLayout refreshlayout) { mHandler.postDelayed(new Runnable() { @Override public void run() { if (size > count){ refreshlayout.finishLoadMoreWithNoMoreData(); }else { if (page * limit >= count){ refreshlayout.finishLoadMoreWithNoMoreData(); }else { page = page +1; getList(search); refreshlayout.finishLoadMore(); } } } },500); } }); srfresh.setEnableRefresh(false); srfresh.setEnableLoadMore(true); srfresh.autoRefresh(); }
// Gson 工具类
public class MyUtils { private static Gson gson; public static Gson getGson() { if(gson==null){ GsonBuilder gb = new GsonBuilder(); gb.registerTypeAdapter(Date.class, new DateSerializer()).setDateFormat(DateFormat.LONG) .registerTypeAdapter(Date.class, new DateDeserializer()).setDateFormat(DateFormat.LONG) .registerTypeAdapter(Double.class, new DoubleDefault0Adapter()) .registerTypeAdapter(double.class, new DoubleDefault0Adapter()) .registerTypeAdapter(Integer.class, new IntegerDefault0Adapter()) .registerTypeAdapter(int.class, new IntegerDefault0Adapter()) .setDateFormat("yyyy-MM-dd"); gson = gb.create(); return gson; }else { return gson; } } static class DateSerializer implements JsonSerializer<Date> { public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.getTime()); } } static class DateDeserializer implements JsonDeserializer<Date> { public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new Date(json.getAsJsonPrimitive().getAsLong()); } } }
public class IntegerDefault0Adapter implements JsonSerializer<Integer>, JsonDeserializer<Integer> { @Override public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { if (json.getAsString().equals("") || json.getAsString().equals("null")) {//定义为int类型,如果后台返回""或者null,则返回0 return 0; } } catch (Exception ignore) { } try { return json.getAsInt(); } catch (NumberFormatException e) { throw new JsonSyntaxException(e); } } @Override public JsonElement serialize(Integer src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src); } }