2017-08-23 8 views
1

私は自分のアプリをfirebaseデータベースに接続し、以前に保存したイメージを表示します。それらはデータベースから検索され、アプリケーションの画面に問題なく表示されます。さらに、アプリケーションの実行中にそれらを保存したい。主なアクティビティライフサイクルから独立してローカルに保存して、アプリケーション全体が破棄されて再び開始されたときにのみローカルストレージからリロードするようにします。Firebaseデータベースからローカルストレージに複数のイメージを保存する

imageDownloadList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.listView); 

    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Images are downloading are loading please wait"); 
    progressDialog.show(); 

    mDatbaseRef = FirebaseDatabase.getInstance().getReference(Constants.FB_DATABASE_PATH); 

    mDatbaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      progressDialog.dismiss(); 

      for(DataSnapshot snapshot: dataSnapshot.getChildren()) 
      { 
       ImageDownload img = snapshot.getValue(ImageDownload.class); 
       imageDownloadList.add(img); 
      } 

      adapter = new ImageListAdapter(ImageViewActivity.this, R.layout.image_item, imageDownloadList); 
      lv.setAdapter(adapter); 
     } 

これは私が画像を取得するために持っているものです。しかし、どのようにイメージの配列を保存することができます。つまり、imageDownloadListのarrayListになります。

+0

どのように保存しますか?ファイル、Sqlite? Firebaseはローカルにキャッシュされていますか?明示的に何かを保存する必要はありますか? –

+0

アクティビティを閉じるたびに、画像が破棄されて画像がリロードされます。私は、ユーザーが、アプリケーションが実行されるとアクティビティを開始するたびに、すべてのイメージをリロードする必要はありません。 私は物事を説明することに本当に悪いです。 一度ユーザーがアプリ全体を破壊すると、ローカルに保存されているすべての画像は破棄され、再度開くと再びアプリケーションに再ロードする必要があります。それが意味をなさない場合 –

+0

アプリがローカルで実行されている間に画像ファイルを保存し、アプリが破棄されたら削除します。もう一度起動したら、それらをリロードしてください。 –

答えて

1

単純な方法の1つは、そのイメージをbase64文字列に変換し、SharedPreferencesまたはSqliteを使用して保存することです。だからあなたが再びアプリケーションを開くと、そのbase64文字列を取得し、画像に変換して表示することができます。

関連する問題