Android 載入或多次載入(附程式碼)
阿新 • • 發佈:2018-11-28
這篇帖子主要說一下列表載入的問題,上個星期開發了幾個列表,開發完以後發現有個bug,就是重複載入,而且載入完第一次以後,跳到第二個上面,然後就卡在第二次載入上,其實資料已經加載出來了,只需要退出本次載入就行,然後多次核對程式碼後發現是因為在一個列表中多次呼叫封裝的載入方法,只需呼叫一次便可解決這個問題。
附載入的程式碼:
private void requestData(String url, RequestParams params) { loadDialog = new LoadDialog();//wu // loadDialog.setLoadText("正在努力載入中..."); // loadDialog.setCancelable(true); FragmentManager manager = getSupportFragmentManager(); loadDialog.show(manager, "load_user_info" + url); HttpUtils.get(url, params, new JsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, org.json.JSONObject response) { if (loadDialog != null && loadDialog.isShowing()) { loadDialog.hide(); } Log.v("DEBUG", "StationErrorManagephotoError1" + response.toString()); try { JSONObject jsonObect = new JSONObject(response.toString()); String messageStr = jsonObect.getString("message"); Gson gson = new Gson(); StationBean datasBean = gson.fromJson(response.toString(), StationBean.class); if (messageStr.equals("ok")) { datasBeanList.addAll(datasBean.getDatas()); stationNewAdapter = new StationNewAdapter(StationErrorManagePhotoError.this, datasBeanList); listViewStation.setAdapter(stationNewAdapter); stationNewAdapter.notifyDataSetChanged(); } else { Toast.makeText(StationErrorManagePhotoError.this, "請重試", Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } onLoadSuccess(response); }
這邊主要是載入列表中的資料,已通過編輯器都設定好,只需直接呼叫就行。然後通過get方法來向資料庫獲取資料,從而實現到資料顯示到列表中,當重新整理的時候,會再次呼叫此方法。
附載入重新整理的程式碼:
private void initView() { datasBeanList.clear(); stationNewAdapter = new StationNewAdapter(StationErrorManagePhotoError.this, datasBeanList); listViewStation.setAdapter(stationNewAdapter); refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(@NonNull RefreshLayout refreshlayout) { getRefreshDate(); refreshlayout.finishRefresh(2000/*,false*/);//傳入false表示重新整理失敗 } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @Override public void onLoadMore(@NonNull RefreshLayout refreshlayout) { getMoreDate(); refreshlayout.finishLoadMore(2000/*,false*/);//傳入false表示載入失敗 } }); }