2016-08-22 1 views
0

Ich möchte die String-Namen in Spinner dynamisch Android von vorherigen Spinner gewählten Element ändern.Ändern Sie die String-Namen in Spinner dynamisch aus vorherigen Spinner gewählten Element

Dies ist meine Aktivitätsklasse:

public class SelectionActivity extends AppCompatActivity implements View.OnClickListener { 

    final String LOG = "Selection"; 
    private Spinner spBranch; 
    private Spinner spSection; 
    private Spinner spSemester,spSubject; 
    private Button btnSend; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.selection); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     spBranch = (Spinner) findViewById(R.id.spBranch1); 
     spSection = (Spinner) findViewById(R.id.spSection1); 
     spSemester = (Spinner) findViewById(R.id.spSemester1); 
     spSubject=(Spinner) findViewById(R.id.spSubject1); 
     String[] items1 = new String[]{"CSE", "EEE", "EE", "ECE", "MECH", "CIVIL"}; 
     ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items1); 
     spBranch.setAdapter(adapter1); 
     String[] items2 = new String[]{"A", "B", "C", "D", "E", "F"}; 
     ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items2); 
     spSection.setAdapter(adapter2); 
     String[] items3 = new String[]{"1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th"}; 
     ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items3); 
     spSemester.setAdapter(adapter3); 

     String[] items4 = new String[]{"Math 1", "Programming in C", "Thermodynamics", "Communication English", "Physics", "Basic Electronics"}; 
     String[] items5 = new String[]{"Chemistry", "Data Structure", "Mechanics", "Buiseness English", "Basic Electrical Engineering l ", "Math 2"}; 
     if(spSemester.getSelectedItem().toString().equals("1st")) 
     { 

      ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items4); 
      spSubject.setAdapter(adapter4); 

     } 
     else{ 

      ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items5); 
      spSubject.setAdapter(adapter4); 

     } 
     btnSend = (Button) findViewById(R.id.btnSend); 

    } 



    @Override 
    public void onClick(View v) { 
     Intent in = new Intent(SelectionActivity.this, ListActivity.class); 
     startActivity(in); 
     HashMap postData = new HashMap(); 
     postData.put("txtBranch", spBranch.getSelectedItem().toString()); 
     postData.put("txtSection", spSection.getSelectedItem().toString()); 
     postData.put("txtSemester", spSemester.getSelectedItem().toString()); 

    } 
} 

I Fehler beim Zeile spSubject.setAdapter(adapter4); Neu bei r bin immer so Andorid, gibt es eine andere Möglichkeit, diesen Code dieses

+0

Was ist der genaue Fehler, den Sie bekommen? –

+0

Ich schlage vor, mehr beschreibende Namen als 'items1',' items2' usw. zu verwenden. Zum Beispiel könnte 'items1'' strBranch' sein. –

Antwort

0

Hinweis ausgewählt, dass alle der Code, den Sie geschrieben haben, werden sofort ausgeführt, wenn der Activity ist erstellt. Dies ist der springende Punkt der onCreate() Methode. Nichts passiert, wenn der Benutzer ein neues Element in einem der Spinner s auswählt. Wenn Sie die Spinner s dynamischer ändern möchten, müssen Sie entsprechende Ereignislistener hinzufügen. Insbesondere müssen Sie AdapterView.OnItemSelectedListener implementieren. Ein Beispiel ist here gezeigt. Ich schlage vor, separate Klassen zu erstellen, die die Listener-Schnittstelle implementieren, anstatt sie in Ihrer Aktivitätsklasse zu implementieren.

0

Versuchen zu tun, wenn zu wissen erste Index in spSemester Spinner ist oder nicht

if(spSemester.getSelectedItemPosition() == 1) 
{ 

    ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items4); 
    spSubject.setAdapter(adapter4); 

} 
else{ 

    ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items5); 
       spSubject.setAdapter(adapter4); 

} 
+0

Wohin geht dieser Code? In welcher Methode? –

+0

An derselben Stelle haben Sie die erste geschrieben. Ich habe gerade den if else Teil bearbeitet. Deshalb habe ich den ganzen Code nicht gepostet. –

+0

Wie löst dies das Problem des OP? –

Verwandte Themen