我正在尝试用android xml开发一个注册屏幕。在每一份登记表中,我都需要显示国家名单。我可以使用strings.xml文件中的字符串数组来完成这项工作。
问题的更大部分在于,当用户选择一个国家时,其下方的电话号码字段最初应填入其各自的国家代码,该代码可能是可编辑的,也可能是不可编辑的。在这里,我的问题是如何在选择国家时获取国家代码。我需要使用数据库还是可以使用XML本身?
除此之外,当用户提交注册表格时,我必须发送国家的缩写代码,而不是完整的国家名称。现在,这又需要一个数据库或XML?
我的应用程序直到现在才使用数据库,使用数据库来实现这一目的是不太好的。此外,几乎所有使用注册的应用程序都需要完成这项工作,但我找不到任何关于如何在android中完成这项工作的资源。
另外,我想告诉你我的sdk最低版本是7。
请帮忙。

最佳答案

我终于不用数据库就能做到了。我正在写下这些步骤,这样可以帮助其他需要做同样事情的人。
首先,我下载了csv,网址是:https://github.com/mledoze/countries/blob/master/countries.csv
我删除了所有其他字段,除了我需要的字段。它留给我3个字段:姓名、缩写和呼叫代码。
接下来,我从http://code.google.com/p/secrets-for-android/source/browse/trunk/src/au/com/bytecode/opencsv/CSVReader.java下载了csvreader
从csv中获取“kopfgeldjaeger”在How to parse the CSV file in android application?中提到的项目:

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文件中显示国家代码。
记住添加setOnTimeSelectedListener()来实现这一点。
我希望这对将来的人有帮助。

09-04 22:40
查看更多