2012-08-03 70 views
2

我对此很新,而且我有一个可能非常简单的问题。从字符串数组中填充微调器

我有3个纺纱器,我想根据用户在以前的纺纱器上所做的选择来填充每个纺纱器。

现在我已经设置了显示所选数据的烤面包,但是我想设置一个活动来打开,但那是晚点。现在我需要知道如何从strings.xml中的数组填充spinner。

的.java

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

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

/** 
* @author madonk 
* 
*/ 
public class Region extends Activity { 

Spinner sp1,sp2,sp3; 
ArrayAdapter<String> reg_adp,sw_city_adp,sw_lake_charles_adp; 
List<String> regions,sw_cities,sw_lake_charles; 
int pos; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_region); 

    regions=new ArrayList<String>(); 

    regions.add("Select a Region"); 
    regions.add("Southwest"); 

    sp1= (Spinner) findViewById(R.id.regions_spinner); 
    sp2= (Spinner) findViewById(R.id.sw_city_spinner); 
    sp3= (Spinner) findViewById(R.id.sw_lake_charles_spinner); 

    reg_adp=new ArrayAdapter<String> (this,android.R.layout.simple_dropdown_item_1line,regions); 
    reg_adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
    sp1.setAdapter(reg_adp); 

    sp1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      pos=arg2; 
      add(); 

     } 

     private void add() { 
      // TODO Auto-generated method stub 
      Toast.makeText(getBaseContext(), ""+pos, Toast.LENGTH_SHORT).show(); 

      switch(pos) 
      { 
      case 0: 
       sw_cities= new ArrayList<String>();      
       sw_cities.add("Select a City"); 


       sw_city_adp=new ArrayAdapter<String>(Region.this, 
         android.R.layout.simple_dropdown_item_1line,sw_cities); 
       sw_city_adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
       sp2.setAdapter(sw_city_adp); 

       select(); 

       break; 
      case 1: 
       sw_cities= new ArrayList<String>(); 
       sw_cities.add("Select a City"); 
       sw_cities.add("Lake Charles"); 
       sw_cities.add("Iowa"); 
       sw_cities.add("Lake Arthur"); 

       sw_city_adp=new ArrayAdapter<String>(Region.this, 
         android.R.layout.simple_dropdown_item_1line,sw_cities); 
       sw_city_adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
       sp2.setAdapter(sw_city_adp); 

       select(); 

       break; 
      } 

     } 

     private void select() { 
      // TODO Auto-generated method stub 

      sp2.setOnItemSelectedListener(new OnItemSelectedListener() { 

       public void onItemSelectedregions(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 

       } 

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

       } 

       public void onItemSelected(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 

       } 

       public void onNothingSelectedregions(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 

       } 
      }); 

     } 

     public void onNothingSelectedcities(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 

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

     } 
    }); 
    } 

stings.xml

<resources> 

    <string name="app_name">Louisiana Festivals</string> 
    <string name="menu_settings">Settings</string> 
    <string name="title_activity_region">Select a Region</string> 
    <string-array name="regions_array"> 
     <item >Southwest</item> 
    </string-array> 
     <string name="select_a_region">Select a Region</string> 
    <string-array name="southwest_cities"> 
     <item >Lake Charles</item> 
     <item >Iowa</item> 
    </string-array> 
    <string name="sw_select_a_city">Select a City</string> 
    <string-array name="lake_charles"> 
     <item>Contraband days Pirate Festival</item> 
     <item>Other festival to be determined</item> 
    </string-array> 

</resources> 

回答

5

你可以从strings.xml中使用getStringArray()一个字符串数组。因此,代码片断你想要的是:

String[] regionsArray = getResources().getStringArray(R.array.regions_array); 
regions = new ArrayList<String>(Arrays.asList(regionsArray)); 

现在,无论你进入regions_array将在地区ArrayList结束。

+0

任何想法如何使它到第二个微调不可用的地方,直到在第一个微调上进行选择等等?或者应该是另一个问题? – Madonk 2012-08-04 00:07:43

+0

并且是getResources。一个局部变量? – Madonk 2012-08-04 00:13:34

+0

即时获取getResources无法解析 – Madonk 2012-08-04 00:27:05