前回はEvernote APIのAndroid上で画像をEvernoteに保存するサンプルコードについて解説をしました.今度は保存した画像を取り出して、以下のように表示してみましょう。
まずUIの作成をします。res/layout/main.xmlの</LinearLayout>の前に、以下の2つの要素を追加します。Buttonは画像を取得して表示するためのshowImagesメソッドを呼ぶボタンで、GridViewが画像を表示する場所です。
ボタンに表示する文字列をres/values/strings.xml
に追加しておきます。
次にHelloEDAM.javaです。先程定義したGridViewのインスタンスを参照できるように、UI要素の変数定義にprivate GridView imgViewを追加します。
また、onCreate
メソッドにimgViewの初期化を追加します。
画像を表示するshowImages
メソッドは以下の通りです。
NodeList notes = getNoteStore().findNotes(...が一番重要なAPIです。このメソッドにフィルタを設定することで、フィルタにマッチしたノートのリストを取得することができます。例えばある文字列が含まれているノートを抽出とか、特定のタグが付いているノートだけ取得といったことができます。ここでは空のフィルタを設定することで、全ノートを対象としています。
findNotesメソッドで取得したノートにはリソースの情報が含まれていないため、リソースを使いたい場合はgetNoteメソッドで明示的に再取得する必要があります。再取得後に、リソースの中身が画像かどうかをMIMEで判断します。画像だった場合はバイト列からBitmapに変換した後、ImageAdapterに追加します。
ImageAdapterはGridViewで画像を扱うために用意したアダプタです。src/com.evernote.android.sampleの下にImageView.javaというファイルを作成して、以下のコードを置きます。
実行すると"Show Images"ボタンが追加されているはずです。ボタンを押してしばらくすると、サンプルコードで保存した画像が表示されます。これでAndroid上でのEvernote APIによるノート作成と読み込みができるようになりました。次回も引き続き拡張をしていきます。