First, yes I’ve browsed through a number of possible solutions and they’ve gotten me close but I’m missing some small crucial step that I just can not find for the life of me. Everything loads fine. The first spinner (Category) is populated as it should be, I can tell that the second spinner (Color) is getting populated through the create method but I’ve missed where to tell it to recreate itself when the user selects a Category. Here’s all my code as it stands now.
package yarn.pack.name;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.AdapterView.OnItemSelectedListener;
public class YarnDatabaseActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner Category_Add_Spinner = Create_Category_Add_Spinner();
Spinner Color_Add_Spinner = Create_Color_Add_Spinner(null);
} catch (Exception e) {
Log.e("ERROR", e.toString());
e.printStackTrace();
}
}
// Creates the Category Spinner for the Add section sends the choice made to
// a method for populating the color spinner
public Spinner Create_Category_Add_Spinner() {
Spinner Category_Add_Spinner = (Spinner) findViewById(R.id.categoryAddID);
String[] Category_Add_Spinner_Array = getResources().getStringArray(
R.array.categoryNames);
SpinnerAdapter Category_Add_Spinner_Adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item,
Category_Add_Spinner_Array);
Category_Add_Spinner.setAdapter(Category_Add_Spinner_Adapter);
Category_Add_Spinner
.setOnItemSelectedListener(new Category_Add_Spinner_Listener());
return Category_Add_Spinner;
}
// The listener for the Category Spinner that sends whatever choice made to
// the method that populates the second spinner.
public class Category_Add_Spinner_Listener implements
OnItemSelectedListener {
public void onItemSelected(AdapterView<?> Category_Add_Adapter_View,
View v, int position, long row) {
String Category_Add_Choice = Category_Add_Adapter_View
.getItemAtPosition(position).toString();
Create_Color_Add_Spinner(Category_Add_Choice);
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
// Creates the Color Spinner for the Add section
public Spinner Create_Color_Add_Spinner(String category_Add_Choice) {
String[] Color_Add_Spinner_Array = null;
Spinner Color_Add_Spinner = (Spinner) findViewById(R.id.colorAddID);
if (category_Add_Choice == "Red") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.RedColors);
} else if (category_Add_Choice == "Pink") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.PinkColors);
} else if (category_Add_Choice == "Orange") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.OrangeColors);
} else if (category_Add_Choice == "Yellow") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.YellowColors);
} else if (category_Add_Choice == "Green") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.GreenColors);
} else if (category_Add_Choice == "Blue") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.BlueColors);
} else if (category_Add_Choice == "Purple") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.PurpleColors);
} else if (category_Add_Choice == "Neutral") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.NeutralColors);
} else if (category_Add_Choice == "Mix") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.MixColors);
} else if (category_Add_Choice == "Fleck") {
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.FleckColors);
} else
Color_Add_Spinner_Array = getResources().getStringArray(
R.array.MixColors);
SpinnerAdapter Color_Add_Spinner_Adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item,
Color_Add_Spinner_Array);
Color_Add_Spinner.setAdapter(Color_Add_Spinner_Adapter);
Color_Add_Spinner
.setOnItemSelectedListener(new Color_Add_Spinner_Listener());
return Color_Add_Spinner;
}
}
I’m pretty well certain that whatever I’m missing is something stupidly obvious but I’ve been working on this for so long and my time is short that I thought I’d reach out here and see if I couldn’t get some light shining on the subject. Thanks in advance for any help you all can give me.
Sorry about the naming conventions. I generally name so it makes the most sense to myself. Anyway, it turns out that the issue was my using == instead of .equals
Made that change and it worked without a hitch! Thank you everyone for your help.
Your code is almost working, not really perfect, but it could work quickly :
As pointed out by @Frankenstein, making your widget data members is often more clear and efficient than always re-getting them from the layout using findViewById.