使用xml中定义的String数组填充微调器

时间:2015-10-27 22:08:47

标签: android arrays arraylist spinner toarray

我正在尝试创建应用程序的第一页,在选择第一个微调器的元素之后,将显示第二个微调器并使用基于第一个微调器的选定元素的数组填充它。我找到了关于toArray()的信息,但我需要一个解释。以下是迄今为止所做的工作。

package com.example.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends Activity implements OnItemSelectedListener{

Spinner state_dropdown, city_dc_dropdown, city_md_dropdown,     city_va_dropdown, city_ny_dropdown, category_dropdown;
Button search_button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    state_dropdown = (Spinner)findViewById(R.id.state);
    city_dc_dropdown = (Spinner)findViewById(R.id.dc_city);
    city_md_dropdown = (Spinner)findViewById(R.id.city_md);
    city_va_dropdown = (Spinner)findViewById(R.id.city_va);
    category_dropdown = (Spinner)findViewById(R.id.category);
    search_button = (Button)findViewById(R.id.search);
    state_dropdown.setOnItemClickListener(this);
}


@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    String state_selected = String.valueOf(state_dropdown.getSelectedItem());
    Toast.makeText(this, state_selected, Toast.LENGTH_LONG).show();
    if(state_selected.contentEquals("DC")){
        List list = new ArrayList();

    }
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub

}

我已经停在了List,因为我很困惑。

2 个答案:

答案 0 :(得分:0)

首先,您必须从xml加载数组并以这种方式创建数组列表:

String[]  array_name= getResources().getStringArray(R.array.your_array);
ArrayList<String> namesList= new ArrayList<String>(Arrays.asList(array_name)));

当你选择正确的项目时,填充微调器:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.your_l, namesList);
yourSpinner.setAdapter(adapter);

答案 1 :(得分:0)

我觉得这是双重工作。您已经在arrays.xml中有了该数组。为什么要再次将其作为列表。那是要处理的更多数据,并且会给PC带来更多压力。 最好的选择是将适配器设置为直接从arrays.xml中拾取并填充微调器。

在从资源创建方法期间插入了数组数据,在单击时,您要做的就是将已单击的内容的字符串值分配给预定义的字符串变量。