【実装編】Android Studioで plist(プロパティリスト) を読み込む
iOSアプリで作った plist ファイルを Android アプリにも活用したい
【環境構築編】Android Studioで plist(プロパティリスト) を読み込む - Android Studioでアプリ開発!で、環境を構築するところまでを説明しました。今回は、実際に実装して plist を読み込んでみたいと思います。
実行イメージ
plist ファイルを読み込んで、内容を TextView に表示する簡単な例です。
plist ファイルを assets フォルダに用意する
iOSアプリで使った plist ファイルをそのままコピーすれば良いです。例では assets フォルダに english.plist を用意しています。
assets フォルダの操作に関してはAndroid Studioで assets フォルダのテキストファイルを読み込む - Android Studioでアプリ開発!を参照してください。
この plist の中身は以下のようになっています。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <dict> <key>りんご</key> <string>apple</string> </dict> <dict> <key>バナナ</key> <string>banana</string> </dict> <dict> <key>みかん</key> <string>orange</string> </dict> </array> </plist>
コードを実装する
private メソッドの plistParser() が実際の処理を行なっている場所です。
String型はインポートした com.longevitysoft.android.xml.plist.domain.String が使われます。java.lang.String型を使う場合は明示的に指定する必要があります。
package com.example.plisttest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import com.longevitysoft.android.xml.plist.PListXMLHandler; import com.longevitysoft.android.xml.plist.PListXMLParser; import com.longevitysoft.android.xml.plist.domain.*; import com.longevitysoft.android.xml.plist.domain.String; import java.io.IOException; public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // plist ファイルを読み込み、TextView に文字列を設定する this.plistParser(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void plistParser() { PListXMLHandler handler = new PListXMLHandler(); PListXMLParser parser = new PListXMLParser(); parser.setHandler(handler); try { // assets フォルダの plist ファイルを開き、パースする parser.parse(this.getAssets().open("english.plist")); } catch (IllegalStateException e){ // エラー処理を実装する } catch (IOException e){ // エラー処理を実装する } PList plist = ((PListXMLHandler) parser.getHandler()).getPlist(); java.lang.String text = ""; // TextView に表示するための文字列 java.lang.String key = ""; // plist からデータを取得するためのキー Array array = (Array)plist.getRootElement(); key = "りんご"; Dict dict = (Dict)array.get(0); String string = dict.getConfiguration(key); text = java.lang.String.format("%s=%s\n", key, string.getValue()); key = "バナナ"; dict = (Dict)array.get(1); string = dict.getConfiguration(key); text += java.lang.String.format("%s=%s\n", key, string.getValue()); key = "みかん"; dict = (Dict)array.get(2); string = dict.getConfiguration(key); text += java.lang.String.format("%s=%s\n", key, string.getValue()); // 画面の TextView に文字列を設定する TextView textView = (TextView) findViewById(R.id.textView); textView.setText(text); } }
これを実行すると、冒頭の実行イメージとなります。
まとめ
iOS アプリで使った plist ファイルをAndroidアプリでも使う方法について【環境構築編】と【実装編】の2回に分けて説明しました。plist のパースを行う処理は外部ブログラムを利用しました。以降の操作は iOS アプリでの扱い方と変わりないと思います。これで iOSアプリとAndroidアプリで共通の plist ファイルを使うことができると思います。
ただし、plist ファイルの内容が増えれば増えるほど parse するのに時間がかかり、ユーザを待たせることになります。読み込み中のダイアログを表示するのがユーザに対して親切だと思います。その方法についてはAndroid Studioで処理中を表すプログレスダイアログを表示する - Android Studioでアプリ開発!を参照してください。
![Android StudioではじめるAndroidプログラミング入門 Android StudioではじめるAndroidプログラミング入門](http://ecx.images-amazon.com/images/I/51UqqUe3ZdL._SL160_.jpg)
Android StudioではじめるAndroidプログラミング入門
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/04
- メディア: 単行本
- この商品を含むブログ (1件) を見る
![初歩からわかるAndroid最新プログラミング 増補改訂版 初歩からわかるAndroid最新プログラミング 増補改訂版](http://ecx.images-amazon.com/images/I/5150hmR8mbL._SL160_.jpg)
- 作者: 柴田文彦,川口仁
- 出版社/メーカー: インプレス
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る