今回は、ListViewについて質問させていただきたく投稿します。
以前、「serviceでのsensorEventListnerの使用について」で、
アドバイスいただいた方法で無事問題解決しまして、
AiSensor2Web という名称でAndroidマーケットに公開できました。
そのアプリでは取得したデータをListViewで表示しますが、
数百件程度から動作がだんだん重くなってきます。
具体的には、
ListViewでリストが表示されない空白の状態が何秒も続く状態です。
仕様上、蓄積データ数に上限を設けていないので、
端末に空き容量がある限りデータ蓄積していきます。
いずれ数千件以上になった際に、
アプリがうんともすんとも言わない状態で止まってしまい、
強制終了または待機のダイアログが出る状況になると思います。
それを避けるためには、
データベースからリスト表示部分だけを順次読み込みする方法に
切り替えるしかないと思いました。
ちょうど、「マーケット」アプリのリスト表示みたいな挙動が希望です。
一定以上スクロールすると次の数十行を読み込む形が、
端末への負荷が少ないと考えています。
良い方法をご存知の方がいらっしゃいましたらご教示ください。
なお、現在、次のようなコードでDBから一括取得しています。
よろしくお願いいたします。
---
DatabaseHelper dbHelper = new DatabaseHelper(DataListActivity.this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
DataDao dataDao = new DataDao(db);
datalist = dataDao.selectAll();
db.close();
listview = (ListView) findViewById(R.id.datalist);
listview.setAdapter(dataListAdapter);
for(Data data:datalist) {
dataListAdapter.addData(data.getRowid(),data.getCreatedTime(),data.getStatus());
}
dataListAdapter.notifyDataSetChanged();
---
こんにちは、徳山です。
SimpleCursorAdapterの件、アドバイスありがとうございます。
なんとか、BaseAdapterからSimpleCursorAdapterに乗り換えることができました。
BaseAdapterはリストにチェックボックスつけたり、
カスタマイズするために使っていたので、
はたしてそれらがSimpleCursorAdapterでも使えるのか不安でしたが、なんとか同様の動作をさせることができました。
唯一、SimpleCursorAdapterを使うために、
テーブルの項目名idを_idにする必要があり、
(ご教示いただいたリファレンスに書いてありました。)
SQLite3では項目名変更できないとのことで、
泣く泣く旧構造テーブル削除して、新構造テーブル追加することにしました。
おかげさまで、新バージョンを、さっそくAndroidマーケットに上げることができました。
ありがとうございました。
2010年8月15日19:58 Isher <mat...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>