2013-03-01 26 views
5

私は大量のデータを含むListViewを持っています。
初めて、Webサービスからすべてのデータを読み込みます。AndroidでListViewのキャッシュを実装する方法

ここでデータをキャッシュして、そのページを再び開くと、Webサービスに再度クエリするのではなく、キャッシュからデータを取得できるようにしたいと思います。

どうすればよいですか。

+0

これのサンプルコードは何ですか? – jithu

答えて

11

私は(あなたがそれを編集した前にあなたがあなたの質問に述べたように。)あなたは直列化可能なオブジェクトにWebServiceから取得したデータを保存していると仮定し

あなたはファイルにシリアライズ可能なオブジェクトを格納し、後でそれらを読み込むことができます。

ストア:

FileOutputStream fileOutputStream = yourContext.openFileOutput(fileName, Context.MODE_PRIVATE); 
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); 
objectOutputStream.writeObject(yourObject); 
objectOutputStream.close(); 

ロード:

FileInputStream fileInputStream = yourContext.openFileInput(fileName); 
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); 
Object yourObject = (Object)objectInputStream.readObject(); 
objectInputStream.close(); 
+0

ArrayList フォロワー。このFollowerInfoは直列化可能なクラスです。リストにデータを追加するためにarraylistフォロワを使用します。私はこのarraylist.howを保管したりキャッシュしたりする必要があると思います。私はこれを行うことができますか? – jithu

+0

'ArrayList'はデフォルトで直列化可能です。' FollowerInfo'も直列化可能であるため、 'ArrayList'全体の格納/ロードに問題はありません。 – fardjad

+0

これをあなたのコードにどのように適用できますか?私の配列リストはどこに置かれますか?objectOutputStream.writeObject(followers);ロード時にyourobjectがタイプファイルなので、私は再びarraylistとして作っていきたいですか? – jithu

0

これは、Webサービスを介して取得したデータをSQLiteデータベースに保存し、これに応じて構造化することで可能です。データベースの最後のレコードより新しいデータを取得する場合は、SharedPreferencesファイルにキー値を保存するよりも新しいデータを取得することをお勧めします。例:

私は、Webサービスからすべてのカレンダーイベントを取得したいと思い

今日のみなしイベントから1月のイベントにアクセスしたユーザ。 1からイベント番号。 10(これらは初めてWebサービスを通じて取得され、SQLiteデータベースにローカルに保存され、カーソルを使用して表示されます)。明日、ユーザがアプリケーションをロードすると、既に取得されたデータがSQLiteデータベース(キャッシュ)からロードされ、ユーザはWebサービスを通じて10より新しいイベントしか取得しません。前日の処理を繰り返す(すなわち、検索されたエントリーをSQLite DBに格納し、それらをすべて1から 'x'に表示する)。

この場合、イベント1〜10をデータベースに保存し、取得したエンティティの次のバッチの開始点を知るために、共有プリファレンスに「11」を保存します。私はあなたを導くことができたと思う。

は、Android上で利用可能なストレージオプションを見てみましょう:http://developer.android.com/guide/topics/data/data-storage.html

すべてのベスト:)

0

あなたの場合は、その1つのようなものです:

How to cache listview data in android?

あなたがどうかを判断する必要がありますあなたは、アプリケーションの寿命よりも長い情報を手に入れたい場合は、SQLデータベースを使用します。そうしないと、アダプタは問題ありません。

SDKパッケージのサンプルで提供されているApiデモには、Listを使用したListのいくつかの例があります。たとえば、List5.javaです。

+0

sql liteにarraylistを挿入できますか?これを文字列に変更することなく – jithu

+0

この質問の詳細な回答はありますか? –

関連する問題