2012-03-26 13 views
0

Ich habe zwei Spinner (Thema und Kapitel), ich kiste zwei Tabelle (Kapitel, Thema).
Ich füge allen Betreff-Namen in Thema Spinner hinzu und ich muss alle Kapitelnamen auf der
Basis der Artikelauswahl in Thema Spinner hinzufügen. Meine Frage ist das wie, denn mein
Code ist dazu nicht in der Lage. Bitte geben Sie einen Hinweis oder Hinweis.
Hier ist mein Beispielcode.Wie man Artikel auf dem zweiten Spinner auf Basis des ersten Spinner hinzufügen?

in onCreate()

addItemsOnSpinner1(); 
    addListenerOnSpinnerItemSelection(); 
    addItemsOnSpinner2(); 
    addListenerOnSpinner2ItemSelection(); 

unter Verwendung der oben-Funktion aufrufen i geeigneten Methode aufrufen.

private void addItemsOnSpinner1() { 
    try 
    { 
     final MySQLiteHelper m=new MySQLiteHelper(getBaseContext()); 
     final List<ObjectiveWiseQuestion> LocWiseProfile= m.getAllSubject(); 

     for (final ObjectiveWiseQuestion cn : LocWiseProfile) 
     { 
      list.add(cn.getSubjectName()); 

     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      subSpinner.setAdapter(dataAdapter); 

} 

private void addListenerOnSpinnerItemSelection() 
{ 
    subSpinner.setOnItemSelectedListener(new mySpinnerListener()); 

} 


private void addItemsOnChapter() 
{ 
    try 
    { 

     db=new MySQLiteHelper(getBaseContext()); 
     db.getWritableDatabase(); 
     //String name=owq.getSubjectName(); 
     int id=db.getSubjectId(name); 
     owq.setSubjectId(id); 
     long subId=owq.getSubjectId(); 
     final MySQLiteHelper m=new MySQLiteHelper(getBaseContext()); 
     final List<ObjectiveWiseQuestion> LocWiseProfile= m.getAllChapter(subId); 

     for (final ObjectiveWiseQuestion cn : LocWiseProfile) 
     { 

      list.add(cn.getChapterName()); 
     } 


     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      chapSpinner.setAdapter(dataAdapter); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

} 
    private void addListenerOnSpinner2ItemSelection() 
{ 
    try 
    { 
     chapSpinner.setOnItemSelectedListener(new mySpinnerListener2()); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

} 

Hier ist meine Listener-Klasse.

class mySpinnerListener2 implements Spinner.OnItemSelectedListener 
{ 
    @Override 
    public void onItemSelected(AdapterView parent, View v, int position, 
      long id) 
    { 
     Toast.makeText(parent.getContext(), "The chapter is " + 
        parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
     owq.setChapterName(parent.getItemAtPosition(position).toString()); 

    } 

    @Override 
    public void onNothingSelected(AdapterView parent) 
    { 
     // Do nothing. 
    } 

} 
class mySpinnerListener implements Spinner.OnItemSelectedListener 
{ 
    @Override 
    public void onItemSelected(AdapterView parent, View v, int position, 
      long id) 
    { 
     Toast.makeText(parent.getContext(), "The subject is " + 
        parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
     owq.setSubjectName(parent.getItemAtPosition(position).toString()); 
     name=parent.getItemAtPosition(position).toString(); 



    } 

    @Override 
    public void onNothingSelected(AdapterView parent) 
    { 
     // Do nothing. 
    } 

} 

Wenn ich versuche, es zu kompilieren, aber es Nullwert zeigen. Gib etwas Hilfe.
Vielen Dank im Voraus ....... Nicht jede gute Antwort finden .....

MysqliteHelper.java

public List<ObjectiveWiseQuestion> getAllChapter(long subId) 
    { 
    List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>(); 
    String selectQuery=("select chapterName from chapter where s_id ='"+ subId +"'"); 
    SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) 
     { 
      do { 
       ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion(); 
       owq.setChapterName(cursor.getString(2)); 
       LocwiseProfileList.add(owq); 
       } 
      while(cursor.moveToNext()); 
      db.close(); 
     } 

     return LocwiseProfileList; 
    } 
+0

Was ist owq in Ihrem Code? – user936414

+0

das kann Ihnen helfen: http://stackoverflow.com/questions/9465167/populating-a-spinner-from-another-spinner-depending-on-condition/9465340#9465340 – Hiral

+0

OWQ ist Objekt meiner Getter-Setter-Klasse –

Antwort

1

Sie die folgende Änderung in Ihrer myspinnerlistener Klasse.

class mySpinnerListener implements Spinner.OnItemSelectedListener 
    { 
    Spinner chapSpinner; 
     public mySpinnerListener(Spinner chapSpinner){ 
    this.chapSpinner = chapSpinner; 
     } 
     @Override 
     public void onItemSelected(AdapterView parent, View v, int position, 
       long id) 
     { 
      Toast.makeText(parent.getContext(), "The subject is " + 
         parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
      owq.setSubjectName(parent.getItemAtPosition(position).toString()); 
      name=parent.getItemAtPosition(position).toString(); 
      // fetch the chaper names and set them on spinner 
    chapSpinner.setAdapter(Here pass your adapter); 


     } 

     @Override 
     public void onNothingSelected(AdapterView parent) 
     { 
      // Do nothing. 
     } 

    } 

Und diese Änderung auch denken

private void addListenerOnSpinnerItemSelection() 
{ 
    subSpinner.setOnItemSelectedListener(new mySpinnerListener(chapSpinner)); 

} 

ich dies Ihr Problem lösen wird.

+0

Es funktioniert nicht ..... –

+1

können Sie Ihren Code, bei dem Sie Array-Adapter auf Chapspinner setzen, veröffentlichen. –

+0

i "Bearbeiten Sie meine Frage" –

Verwandte Themen