-3

I am new to android , I have an activity with 3 multiple spinners as bellow Spinner 1:department Spinner2:semester Spinner3:subjects and one button

spinner1 shows the department on select of department it has to display the semester on select of semester it has to display the subject spinner NOTE:-SUBJECT SPINNER DEPENDS ON THE SELECTION OF SEMESTER SPINNER AS WELL AS DEPARTMENT SPINNER.

something like country, state, city spinners but suggest me some other ideas to do it because i am using string resources to list the items of spinners

Please help me

  • Possible duplicate of [Android : Fill Spinner From Java Code Programmatically](http://stackoverflow.com/questions/11920754/android-fill-spinner-from-java-code-programmatically) – Vasileios Pallas Jan 23 '17 at 15:00

1 Answers1

-1

Try something like this in your activity.

Firstly, make your activity implement AdapterView.OnItemSelectedListener & View.OnClickListener.

private Spinner mDepartmentSpinner;
private Spinner mSemesterSpinner;
private Spinner mSubjectSpinner;
private Button  mButton;

// Values to fill first spinner with.
private String[] mDepartments = {
        "Department 1",
        "Department 2",
        "Department 3",
        "Department 4",
};
private String[] mSemesters;
private String[] mSubjects;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initViews();
}

private void initViews() {
    // Find the spinners and button, declared in the activity's resource file
    mDepartmentSpinner = (Spinner) findViewById(R.id.department_spinner);
    mSemesterSpinner = (Spinner) findViewById(R.id.semester_spinner);
    mSubjectSpinner = (Spinner) findViewById(R.id.subject_spinner);
    mButton = (Button) findViewById(R.id.button);

    // Initialise spinner with values, placing them into a textview
    mDepartmentSpinner.setAdapter(new ArrayAdapter<String>(getContext(), R.layout.text_view, mDepartments));
    // Attach a listener for item selection
    departmentSpinner.setOnItemSelectedListener(this);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    // Work out which spinner was selected
    switch (view.getId()) {
        case R.id.department_spinner:
            // Get the selected item
            String selectedDepartment = mDepartments[position];
            // Get values to fill the semester spinner with, based on initial selection.
            mSemesters = getSemestersFor(selectedDepartment);
            // Initialise spinner with values, placing them into a textview
            mSemesterSpinner.setAdapter(new ArrayAdapter<String>(getContext(), R.layout.text_view, mSemesters));
            // Attach a listener for item selection
            mSemesterSpinner.setOnItemSelectedListener(this);
            break;

        case R.id.semester_spinner:
            // Get the selected item
            String selectedSemester = mSemesters[position];
            // Get values to fill the subject spinner with, based on second spinner selection.
            mSubjects = getSubjectsFor(selectedSemester);
            // Initialise spinner with values, placing them into a textview
            mSubjectSpinner.setAdapter(new ArrayAdapter<String>(getContext(), R.layout.text_view, subjects));
            // Attach a listener for item selection
            mSubjectSpinner.setOnItemSelectedListener(this);
            break;

        case R.id.subject_spinner:
            mButton.setOnClickListener(this);
            break;

    }
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Please select an option from each spinner.", Toast.LENGTH_LONG).show();
        }
    });
}

@Override
public void onClick(View v) {
    // Go to your new activity, passing the selected subject
    Intent intent = new Intent(this, SubjectActivity.class);
    intent.putExtra("KEY_SUBJECT", (String) mSubjectSpinner.getSelectedItem());
    startActivity(intent);
}

You can get the selected subject in the SubjectActivity like so...

@Override
public void onCreate(Bundle savedInstanceState) {
    if (getIntent().getExtras().containsKey("KEY_SUBJECT") {
        String subject = getIntent().getExtras().getString("KEY_SUBJECT");
    }
}

Code for R.layout.text_view

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

You will need to implement the following methods yourself, I don't know your logic!

private String[] getSemestersFor(String department) {
    // your code here
}

private String[] getSubjectsFor(String semester) {
    // your code here
}
Charlie
  • 2,876
  • 19
  • 26