java - Android Spinner 更改 setContentView

标签 java android

所以,到目前为止我有一个带有两个不同选项的微调器。我想要完成的是,如果选择“第一个微调器选项”,那么我将ContentView 设置为特定布局并执行与该布局相对应的代码。如果选择“第二个微调器选项”,情况也是如此。我知道我需要在一定程度上使用 setOnItemSelectedListener,但我不确定这到底是如何工作的。下面是我在编码方面尝试做的事情的快速模拟

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

}

最佳答案

我不知道你到底遇到了什么问题,但它非常接近。您只需要添加方法

@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)并将其与适配器中的内容进行比较,但由于我不知道你是如何做到这一点的,所以这是让您入门的最简单方法。

关于java - Android Spinner 更改 setContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18091984/

相关文章:

java - 为什么 SimpleDateFormat HH 与 hh 的工作方式不同

java - 线程中出现异常 "main"java.lang.UnsatisfiedLinkError : no jniopencv_core in java. library.path

android - 实体中不存在主键中引用的房间

java - 寻找一种翻转比迪语(希伯来语)文本的方法,以便在 AndEngine 中正确显示

android - 使用 Android 的 GLSurfaceView.RENDERMODE_CONTINUOUSLY 时如何限制帧率?

android - 它是如何工作的 : passing an abstract class as parameter in Room Database builder

java - boolean 值和 Firebase 数据库

java - 如何配置 settings.xml 从 Artifactory 私有(private)虚拟仓库中拉取?

Java RandomAccessFile 的内存使用情况

java - AlarmManager 不会启动服务