2

I'm pretty new to this, and I have a question that is probably pretty simple.

I have 3 spinners, and I want to populate each spinner from an array based on the choice the user made on the previous spinners.

Right now i have it set up to display a toast with the selected data, but I want to set up an activity to open up, but that's later. Right now I need to know how to populate the spinner from an array from the strings.xml.

.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>

1 Answer 1

5

You can get a string array from strings.xml using getStringArray(). So the code snippet you want is:

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

Now whatever you enter into regions_array will end up in the regions ArrayList.

Sign up to request clarification or add additional context in comments.

5 Comments

any idea how to make it to where the second spinner is not available until a selection is made on the first one and so on? Or should that be another question?
and is getResources. a local variable?
I'd make your first comment another question. As for getResources(), it's a function call, not a variable. Sorry, my mistake. So it needs to be getResources().
thank you, after a little googleing I found it. then my wife made me go watch American Reunion.....I will accept your answer!
I'm glad you were able to figure it out

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.