2013-08-06 85 views
0

所以,我有一個微調到目前爲止有兩個不同的選項。我試圖完成的是,如果選擇「First Spinner Option」,那麼我將setContentView設置爲特定佈局並執行與該佈局相對應的代碼。如果選擇「Second Spinner Option」,也是一樣。我知道我需要在一定程度上使用setOnItemSelectedListener,但我不確定這將如何工作。下面是我想要在編碼方面Android微調改變setContentView

spinner.setonItemSelectedListener(this); 
    if(spinner = first spinner option){ 
     setContentView(R.layout.lay1); 
     //other code here 
    }elseif(spinner = second spinner option){ 
     setContentView(R.layout.lay2); 
     //other code here 
    } 

我知道的語法是壞在這裏做一個快速模仿了起來,我只是試圖讓這如何可以做一個總體思路。

編輯:@CodeMagic 這是我的代碼到目前爲止如何設置。 'items'只是一個包含2個元素的字符串數組。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.my_spinner_style, items) { 

      public View getView(int position, View convertView, ViewGroup parent) { 
       View v = super.getView(position, convertView, parent); 
       Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Exo-Bold.otf"); 
       ((TextView) v).setTypeface(tf); 
       return v; 
      } 


      public View getDropDownView(int position, View convertView, ViewGroup parent) { 
       View v =super.getDropDownView(position, convertView, parent); 
       Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Exo-Bold.otf"); 
       ((TextView) v).setTypeface(tf); 
       //v.setBackgroundColor(Color.GREEN); 

       return v; 
      } 
    }; 


    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);         
    gasChoice.setAdapter(adapter); 

    addListenerOnSpinnerItemSelection(); 
} 

public void addListenerOnSpinnerItemSelection(){ 
    gasChoice = (Spinner) findViewById(R.id.gasChoice); 
    gasChoice.setOnItemSelectedListener(new OnItemSelected()); 

} 
+0

我會避免這種邏輯模式,而是有一個空白區域的佈局,其中你的微調器中的選擇會膨脹一個新的佈局或使用片段。 – Phix

回答

1

我不確切地知道你遇到了什麼問題,但它非常接近。你只需要添加的方法

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    TextView tv = (TextView)arg1; // get the TextView selected 
    String text = tv.getText().toString(); 
    if(text.equals("FirstText")){ // compare the text in the box 
      setContentView(R.layout.lay1); 
    //other code here 
    }elseif(text.equals("FirstText")){ 
      setContentView(R.layout.lay2); 
     //other code here 
    } 
} 

有這樣做,例如獲取位置(arg2)和比較,要什麼在你的適配器,但由於不同的方式,我不知道你是怎麼做的任何的那是,這是讓你開始的最簡單的方法。

+0

我已更新我的帖子以包含一些可能有所幫助的更多信息。很明顯,我需要創建我的onItemSelected方法。但這是我迄今爲止得到的。 – Scalahansolo

+0

我不確切知道你遇到的問題。創建方法並使用'position'將它與'Adapter'中的位置進行比較 – codeMagic