2012-10-19 67 views
0

我有2個微調。我從數據庫加載微調數據。當我在第一個微調器中選擇任何項目時,根據該項目,第二微調器應該加載相應的數據。例如,如果在第一微調器中選擇蔬菜,則只有蔬菜名稱應該進入第二,如果在1st中選擇水果,然後水果名稱應該排在第二位。如何將第一個微調器中的選定項傳遞給我的Customized微調器類? 我試圖通過這個項目,但它在第二個微調的每一行給我空白。 這裏是我的代碼android中的自定義微調錯誤

// Spinner click listener 
      spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

       @Override 
       public void onItemSelected(AdapterView<?> paramAdapterView, 
         View paramView, int paramInt, long paramLong) { 
        // TODO Auto-generated method stub 
        label = paramAdapterView.getItemAtPosition(paramInt) 
          .toString(); 
        deviceID = paramInt; 
        loadSpinnerData1(label); 

       } 
     private void loadSpinnerData1(String type) { 
     // database handler 
     DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
       //getting the spinner item depending on what item selected in 1st spinner 
       List<String> manuft = db.getAllManuft(type); 
     spinner1.setAdapter(new MyAdapter1(OptionsActivity.this, R.layout.row, manuft,type)); 
    } 

我定製微調類

 public class MyAdapter1 extends ArrayAdapter<String>{ 

     public MyAdapter1(Context context, int textViewResourceId, List<String> manuft, String type) { 
      super(context, textViewResourceId, manuft); 
     } 

     @Override 
     public View getDropDownView(int position, View convertView,ViewGroup parent) { 
      return getCustomView(position, convertView, parent, label); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      return getCustomView(position, convertView, parent, label); 
     } 

     public View getCustomView(int position, View convertView, ViewGroup parent, String type) { 

      DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 

      List<String> manuft = db.getAllManuft(type); 

      LayoutInflater inflater=getLayoutInflater(); 
      View row=inflater.inflate(R.layout.row, parent, false); 
      TextView label=(TextView)row.findViewById(R.id.device); 

      for(int i=0;i<manuft.size();i++){ 
       label.setText(manuft.get(position)); 
      } 


      return row; 
      } 
     } 
+0

在'db.getAllManuft(類型)請告訴我有;'?我的意思是它返回的是什麼。你有沒有試過看這個函數的響應。 –

+0

是的,它正確返回。併爲每個項目創建行,但該項目名稱未顯示。 –

+0

@ Brinda-user1594986發佈完整的錯誤logcat。 –

回答

0

//聲明選擇globaly

String type; 

然後讓this.type =類型名的項目;在loadspinner

0

嘗試是這樣的:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, android.view.View v, int position, long id) { 
        // this method will update your second spinner 
      updateSecondSpinner(id); 


     } 

這裏更新第二微調的方法:

private void updateSecondSpinner(long id) { 

       String[] args = new String[] { String.valueOf(id) }; 
       cur2 = db.rawQuery("select IID AS _id, TXNAME from TABLE WHERE IID= ?", args); 

       SimpleCursorAdapter adapter_2 = new SimpleCursorAdapter(AccidentNewActivity.this, android.R.layout.simple_spinner_item, cur2, 
        new String[] { "TXNAME" }, new int[] { android.R.id.text1 }); 

       adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

       spinner_modelo.setAdapter(adapter2); 

... 
} 
+0

我想要自定義微調器。 –