3

Android XML から登録画面を開発しようとしています。すべての登録フォームと同様に、国のリストを表示する必要があります。これは、strings.xml ファイルの string-array を使用して行うことができます。

問題の大部分は、ユーザーが国を選択したときに、そのすぐ下の電話番号フィールドに最初にそれぞれの国コードが入力されている必要があることです。ここで、私の問題は、国が選択されたときに国コードを取得する方法です。データベースを使用する必要がありますか、それとも xml 自体を使用して実現できますか?

それに加えて、ユーザーが登録フォームを送信するとき、完全な国名ではなく、国の省略コードを送信する必要があります。さて、これもまた、データベースか xml のどちらかが必要でしょうか?

私のアプリは今までデータベースを使用していません。この目的でデータベースを使用するのはあまり良いことではありません。さらに、登録を使用するほとんどすべてのアプリケーションでこれを行う必要がありますが、Android でこれを行う方法に関するリソースが見つかりません。

また、私の最小 SDK はバージョン 7 であることをお伝えしたいと思います。

助けてください。

4

2 に答える 2

3

データベースを使わずにやっとできました。同じことをする必要がある他の人に役立つように、手順を書き留めておきます。

最初に、 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() を追加することを忘れないでください。

これが将来誰かに役立つことを願っています。

于 2013-04-23T10:09:26.893 に答える
0

データベースを使用することをお勧めします。API レベル 7 は SQLite データベースをサポートします (私は自分で Android 2.1 で使用しました)。必要なすべての情報を含む 1 つのテーブルを作成します。

create table countries (
    _id integer primary key autoincrement,
    country_code    char(2),
    country_name    varchar,
    phone_code      char(4),
    editable        integer
);

次に、国情報をこのテーブルに保存します。国のリストを作成するときは、XML の代わりにこの表を使用してください。国名を表示し、国コードを対応する各リスト項目に関連付けます。次に、選択時に国コードを使用して電話コードと「編集可能」フラグを取得し、この情報に基づいて行動します。

于 2013-04-23T08:45:30.937 に答える