データベースを使わずにやっとできました。同じことをする必要がある他の人に役立つように、手順を書き留めておきます。
最初に、 https ://github.com/mledoze/countries/blob/master/countries.csv で入手可能な CSV をダウンロードしました。
必要なフィールドを除いて、他のすべてのフィールドを削除しました。名前、略語、呼び出しコードの 3 つのフィールドが残りました。
次に、 http ://code.google.com/p/secrets-for-android/source/browse/trunk/src/au/com/bytecode/opencsv/CSVReader.java から CSVReader をダウンロードしました。
How to parse the CSV file in android application? で述べたように、CSV から項目を取得しましたか? 「Kopfgeldjaeger」による:
String next[] = {};
List<String[]> list = new ArrayList<String[]>();
try {
CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("countries.csv")));
for(;;) {
next = reader.readNext();
if(next != null) {
list.add(next);
} else {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
次に、次のような値ごとに ArrayList を追加しました。
ArrayList<String> countryNames = new ArrayList<String>();
ArrayList<String> countryAbber = new ArrayList<String>();
ArrayList<String> countryCodes = new ArrayList<String>();
for(int i=0; i < list.size(); i++)
{
countryNames.add(list.get(i)[0]); // gets name
countryAbber.add(list.get(i)[1]); // gets abbreviation
countryCodes.add(list.get(i)[2]); // gets calling code
}
次に、XML レイアウトのスピナーに次のように追加しました。
ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countryNames);
spinner.setAdapter(countryAdapter);
// adding event to display codes when country is selected
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int pos, long arg3) {
// display the corresponding country code
TextView tvCountryCode = (TextView) findViewById(R.id.country_code);
tvCountryCode.setText("+"+list.get(pos)[2]);
countryPosition = pos;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
このようにして、国がドロップダウン リストから選択されたときに、国コードを xml ファイルに表示することができました。
それを達成するために setOnItemSelectedListener() を追加することを忘れないでください。
これが将来誰かに役立つことを願っています。