用xml中定义的字符串数组填充微调器

问题描述 投票:0回答:2

我正在尝试创建应用程序的第一页,在选择了来自第一个微调器的元素之后,将显示第二个微调器,并根据第一个微调器的选定元素填充一个数组。我已经找到了有关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上。

android arrays arraylist spinner toarray
2个回答
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);


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

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

© www.soinside.com 2019 - 2024. All rights reserved.