VolleyとORMLiteと一緒にデータからリストビューを生成しようとしています。私がページをリフレッシュまたはリロードするためにプルを実行すると、データが表示されます。私はページをリロードすると、私はのupdateUI()関数を使用しています:リストビューがonCreateのVolleyのデータで埋められていない
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);
}
});
}
私が作ってるんだVolleyCallは、APIからデータを取得し、ORMLiteでデータベースに保存されてきている管理オブジェクト、それを解析しています。
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);
}
}
私はどこに問題があるのか分からないので、私の問題は何人か知っているかもしれません。 EDITEDアドバンス
で
ありがとう:Shubham Goelさんへ
おかげで、私は解決策を見つけた:
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 –