2012-03-26 15 views
0

私は2つのスピナー(件名と章)、2つのテーブル(章、件名)を作成しています。
件名スピナーにすべての件名を追加します。件名スピナーの項目選択の
基準にすべての章名を追加する必要があります。私の質問は、私の
コードがこれを行うことができないので、その方法です。ヒントや参考にしてください。
ここに私のサンプルコードです。私は適切なメソッドを呼び出す関数を呼び出す上に使用のonCreateで最初のスピナーに基づいて2番目のスピナーにアイテムを追加するにはどうすればよいですか?

()

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

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(); 
    } 

} 

ここは私のリスナークラスです。

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. 
    } 

} 

コンパイルしようとしていますが、null値が表示されます。助けてください。何か良い答えを見つけることが 事前に
おかげで....... .....

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

あなたのコードでは、owqとは何ですか? – user936414

+0

これはあなたを助けることができます:http://stackoverflow.com/questions/9465167/populating-a-spinner-from-another-spinner-depending-on-condition/9465340#9465340 – Hiral

+0

owqは私のgetter-setterクラスのオブジェクトです –

答えて

1

は、あなたのmyspinnerlistenerクラスに以下の変更を行います。

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. 
     } 

    } 

そして、この変更も

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

} 

私はこれがあなたの問題を解決すると思います。

+0

それは動作していません..... –

+1

あなたはchapspinnerに配列アダプタを設定しているあなたのコードを投稿することができます。 –

+0

i「私の質問を編集する」 –

関連する問題