1
我試圖從數據與Volley和ORMLite一起生成列表視圖。當我執行拉動刷新或重新加載頁面時,會顯示數據。當我重裝我使用的是updateUI()函數的頁面:列表視圖未使用來自Volley的數據onCreate
private void updateUI() throws SQLException {
mAdministrationList.clear();
mAdminstrationAdapter = new AdministrationAdapter(this, getLayoutInflater(), mAdministrationList);
mVolleyHandler.GETAdministrations();
mAdministrationList = mAdministrationDao.queryForAll();
mAdminstrationListView.setAdapter(mAdminstrationAdapter);
mAdminstrationListView.setOnItemClickListener(this);
mAdminstrationAdapter.notifyDataSetChanged();
}
此功能,但該列表是,如上面提到的,只有裝上拉刷新。
我的onCreate看起來是這樣的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_administration);
mAdminstrationListView = (ListView) findViewById(R.id.administrationListView);
mProgressSpinner = (ProgressBar) findViewById(R.id.administration_spinner);
try {
mAdministrationDao = getHelper().getAdministrationDao();
mGlobalsDao = getHelper().getGlobalsDao();
mGlobals = mGlobalsDao.queryForAll().get(0);
mCurrentAdministration = mGlobals.getAdministration();
mToken = mGlobals.getToken();
mUser = mGlobals.getUser();
mVolleyHandler = VolleyHandler.getInstance(this, mGlobals.getIpAddress(), mCurrentAdministration, mUser, mToken);
updateUI();
mAdminstrationAdapter.notifyDataSetChanged();
} catch (SQLException e) {
e.printStackTrace();
}
mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.administrationSwipe);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
try {
updateUI();
mAdminstrationAdapter.notifyDataSetChanged();
} catch (SQLException e) {
e.printStackTrace();
}
mSwipeRefreshLayout.setRefreshing(false);
}
});
}
我正在從API獲取數據,並將其解析到一個管理對象,誰獲得保存與ORMLite數據庫VolleyCall。
public void ParseAdministration(String response) throws JSONException, SQLException {
JSONObject jsonObject = new JSONObject(response);
JSONArray results = jsonObject.getJSONArray("results");
for (int i = 0; i < results.length(); i++) {
JSONObject object = results.getJSONObject(i);
Administration administration = new Administration();
administration.setId(Long.valueOf(object.getString("id")));
administration.setName(object.getString("name"));
administration.setAddress1(object.getString("address1"));
administration.setAddress2(object.getString("address2"));
administration.setPostalCode(object.getString("postalCode"));
administration.setCity(object.getString("city"));
administration.setCountry(object.getString("country"));
mDatabaseHelper.saveAdministration(administration);
}
}
我找不到問題所在,所以也許你們有些人知道我的問題是什麼。
由於提前
編輯:
感謝Shubham戈埃爾,我已經找到了解決辦法:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
mProgressSpinner = (ProgressBar) findViewById(R.id.administration_spinner);
updateUI();
} catch (SQLException e) {
e.printStackTrace();
}
mProgressSpinner.setVisibility(View.GONE);
}
}, 3000);
也許這是一個有點髒,但它的工作。讓我知道如果你認爲有更好的解決方案:)
關於如何確保在頁面加載之前進行過抽樣調用的任何建議? –
你可以在這裏發佈你的VolleyHandler類代碼嗎? @OrlandoSmits –