前提・実現したいこと
Androidアプリを制作中です。
更新のボタンを押すことで、リストビューが更新されるようにしたいです。
- SQLiteDatabaseからデータを取得
- 1行ごとに特定のカラムを取得、adapterに追加
- 最後の行まできたら終了
何が欠けているのでしょうか?
発生している問題・エラーメッセージ
シンプルなものなのですが、いつまでたってもデータが表示されません。
adapter.getCount()やadapter.getItem(0)などで、データが格納できていることは確認済みです。
notifyDataSetChanged()やinvalidateViews()も試しましたが、何も変わりません。
エラーで出ていません。また、別のVolleyを使ったものは、adapter.add()でうまくいきました。
該当のソースコード
// 検索ボタン final Button updateButton = (Button) findViewById(R.id.updateButton); // メイン(UI)スレッドでHandlerのインスタンスを生成する final Handler handler = new Handler(); // 押したときのメソッド updateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 結果を初期化 bookmarkAdapter.clear(); new Thread(new Runnable() { @Override public void run() { // Handlerを使用してメイン(UI)スレッドに処理を依頼する handler.post(new Runnable() { @Override public void run() { Cursor cursor = null; if(helper == null){ helper = new CompanyOpenHelper(getApplicationContext()); } if(db == null){ db = helper.getWritableDatabase(); } // クエリ cursor = db.query(CompanyOpenHelper.TABLE_NAME, CompanyOpenHelper.COLUMNS, null, null, null, null, "name" ); // 参照先を一番始めに boolean isEof = cursor.moveToFirst(); // データを取得していく while(isEof) { // 出力 bookmarkAdapter.add(cursor.getString(cursor.getColumnIndex("name"))); Log.d( "onClick", ""+bookmarkAdapter.getCount());//正しくカウントアップする bookmarkAdapter.notifyDataSetChanged(); bookmarkListView.invalidateViews(); // 次のヒットへ isEof = cursor.moveToNext(); } // 忘れずに閉じる cursor.close(); } }); } }).start(); } });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。