从其他字符串数组存储String数组

时间:2017-06-21 04:24:40

标签: android

我在设置页面上创建使用微调器中的微调器有一个医院名称可供选择 当选定的医院医院有一个电话号码保存设置按钮点击呼叫该医院

enter image description here

这是我的String-Array

我有两个字符串 - 数组首先是医院的电话号码 第二个是医院名称我需要在旋转器中选择时将数字存储到与医院名称相同的医院名称

<string-array name ="number">
    <item>055270300</item>
    <item>055909000</item>
    <item>055212222</item>
</string-array>

<string-array name="hospital">
    <item>hospital 1</item>
    <item>hospital 2</item>
    <item>hospital 3</item>
</string-array>

这是我的活动:

    TextView title = (TextView) findViewById(R.id.toolbar_title);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    title.setText(toolbar.getTitle());
    title.setText("การแจ้งเหตุฉุกเฉิน");


    phonenum = (EditText)findViewById(R.id.input_phonenum);
    message = (EditText)findViewById(R.id.put_message);


    preferences = getSharedPreferences(shared_preferences,Context.MODE_PRIVATE);
    editor = preferences.edit();
    spinner = (Spinner)findViewById(R.id.sos_spinner);

    String[] hospital = getResources().getStringArray(R.array.hospital);
    ArrayAdapter<String> adapterhospital = new ArrayAdapter<String>(this ,android.R.layout.simple_list_item_1, hospital);
    spinner.setAdapter(adapterhospital);

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            editor.putInt(String.valueOf(getResources().getStringArray(R.array.number)),   R.array.hospital);

            editor.commit();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    button = (Button)findViewById(R.id.save_btn);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String getMessage = message.getText().toString();
            int getPhonenum = Integer.parseInt(phonenum.toString());

            editor.putInt(stored_phonenum, getPhonenum);
            editor.putString(stored_message , getMessage);
            editor.commit();

            Toast.makeText(HowtoActivity.this, "Data Saved.",
                    Toast.LENGTH_SHORT).show();
        }
    });
}

2 个答案:

答案 0 :(得分:1)

我建议使用java而不是xml创建数组。

非常简单,

ArrayList<String> hospitals= new ArrayList<>();

然后以这种方式将医院添加到此数组列表中:

hospitals.add("Hospital 1");
hospitals.add("Hospital 2");
hospitals.add("Hospital 3");

请注意,这个(医院数组)是您将在微调器中存储的数组。

对于您想要实现的任务,我将继续这样做: 您可以再安排一个arraylist来存储医院及其相应的数字,用逗号(,)分隔: 所以创建另一个数组主义者,让我们称之为数字。

ArrayList<String> numbers = new ArrayList<>();
numbers.add("Hospital 1,71955555");
numbers.add("Hospital 2,71955556");
numbers.add("Hospital 3,71955557");

现在,一旦用户选择微调器上的项目,使用onItemSelected获取值并将其存储在共享首选项中。

现在只需遍历数字arrayList并收集数字,如果您选择的值等于医院名称。您可以拆分逗号所在的值。这样:

for(int i=0;i<numbers.size();i++){

    String value = numbers.get(i);
    String names[]= value.split(",");
    String name = names[0];
    if(name.equalsIgnoreCase("Value stored from spinner"){
    String number = names[1];
    //Store this number in shared preferences as the value for the hospital //selected
}

}

从这里,您可以在需要的任何活动中从您的共享偏好中拨打医院号码。

答案 1 :(得分:0)

您可以使用xml pull Parser来实现此目的。 像这样创建一个xml

 <?xml version="1.0" encoding="utf-8"?>
<resources>
<hospital>
    <hospital>
        <a_name>hospital 1</a_name>
        <a_number>71955555</a_number>
    </hospital>
   <hospital>
        <a_name>hospital 1</a_name>
        <a_number>71955555</a_number>
    </hospital>
    <hospital>
        <a_name>hospital 1</a_name>
        <a_number>71955555</a_number>
    </hospital>
    <hospital>
        <a_name>hospital 1</a_name>
        <a_number>71955555</a_number>
    </hospital>
</hospitalprovider>