【问题标题】:populate spinner with String array defined in xml使用 xml 中定义的字符串数组填充微调器
【发布时间】:2016-01-27 12:51:58
【问题描述】:

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


【解决方案1】:

首先你必须从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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您可以编辑您的答案以包含代码示例吗?这将真正完善本指南。
    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多