1

我正在尝试创建应用程序的第一页,在选择第一个微调器中的元素后,将显示第二个微调器并使用基于第一个微调器的选定元素的数组填充它。我找到了有关 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 停了下来,因为我很困惑。

4

2 回答 2

2

首先,您必须从 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);
于 2015-10-27T23:42:51.803 回答
0

我觉得这是双重工作。您已经在arrays.xml 中有数组。为什么要再次作为列表。这是要处理的更多数据,对个人电脑来说压力更大。最好的选择是将适配器设置为直接从 arrays.xml 中选择并填充微调器。

The array data is inserted during the create from resource method, and in the on click, all you have to do is assign the string value of whatever has been clicked on to a predefined string variable.

于 2020-05-19T07:15:05.497 回答