2017-01-23 6 views
-3

Я новичок в Android, у меня есть деятельность с 3 несколькими блесны, как показано ниже Spinner 1: отдел Spinner2: семестр Spinner3: предметы и одна кнопкаAndroid блесны динамические привязки данных

Spinner1 показывает отдел по выберите отдел, на котором он должен отобразить семестр на выбранном семестре, он должен отобразить предметный счетчик ПРИМЕЧАНИЕ. - СПИННЕР ОБЕСПЕЧЕНИЯ ЗАВИСИТ ОТ ВЫБОРА СПИННЕРА СЕМЕСТРА И КАК ДЕПАРТАМЕНТ СПИННЕРА.

что-то вроде страны, штата, города блесен, но предложить мне некоторые другие идеи, чтобы сделать это, потому что я использую строковые ресурсы, чтобы перечислить пункты блесен

Пожалуйста, помогите мне

+0

Возможный дубликат [Android: Наполните Spinner От кода Java Программным способом] (http://stackoverflow.com/questions/11920754/android-fill-spinner-from-java-code-programmatically) –

ответ

0

Попробуйте что-нибудь подобное в вашей деятельности.

Во-первых, активируйте свою деятельность 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); 
} 

Вы можете получить выбранный объект в SubjectActivity как так ...

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

Код для 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"/> 

Вам нужно будет реализовать следующие методы себя, я не знаю вашей логики!

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

private String[] getSubjectsFor(String semester) { 
    // your code here 
} 
+0

Спасибо Mr charlie это может помочь мне, я проверю это –

+0

не могли бы вы рассказать мне, что он должен возвращать в функции getemester и getsubject, потому что я использовал условие переключения в этих методах, и я использую эти методы только в основном файле java-активности –

+0

Я основатель ошибка в этой строке также "mSubjectSpinner.setAdapter (новый ArrayAdapter (getContext(), R.layout.text_view, mSubjects));" –