2013-08-06 43 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