如何制作微调器取决于另一个微调器 [英] how to make spinner depends on another spinner

查看:74
本文介绍了如何制作微调器取决于另一个微调器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为android构建一个简单的应用程序,其中包括微调框和edittext. 问题是我在适配器中有2个带有数组的微调器

微调框1

 ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.kendaraan_arrays,android.R.layout.simple_spinner_item);
    spKendaraan.setAdapter(adapter1);

我想要的是微调器2中的数组取决于我在微调器1中选择的内容

Spinner 2

@Override
    public void onItemSelected (AdapterView < ? > adapterView, View view,int position, long id){
    if (spKendaraan.getSelectedItem().equals("Mobil")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih", Toast.LENGTH_SHORT).show();
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_mobil, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_motor, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    }
}

我上面的代码不起作用,我在犯逻辑/方法错误吗?

tl; dr

if spinnerA == x{
spinnerB = m
}
else {
spinnerB = n
}

由于我是android的新手,所以任何示例都将不胜感激.

解决方案

我不知道您的代码为什么不起作用,但是下面的示例代码可以根据需要工作,希望对您有所帮助.

XML布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.stackspinner.MainActivity" >

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/spinner1" />

</RelativeLayout>

活动:

public class MainActivity extends Activity implements OnItemSelectedListener {

Spinner spinner1, spinner2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,
            R.array.array1, android.R.layout.simple_spinner_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {
    if (spinner1.getSelectedItem().equals("mobile")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih",
                Toast.LENGTH_SHORT).show();

        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.mobile_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.motor_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    }

}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
}

}

字符串:

<resources>

<string name="app_name">Application Name</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="array1">
    <item>mobile</item>
    <item>motor</item>
</string-array>
<string-array name="mobile_array">
    <item>Android</item>
    <item>blackberry</item>
    <item>apple</item>
</string-array>
<string-array name="motor_array">
    <item>Audi</item>
    <item>BMW</item>
    <item>unicorn</item>
</string-array>

I'm building a simple app for android which consists of spinners and edittext. question is I have 2 spinners with arrays in an adapter

Spinner 1

 ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.kendaraan_arrays,android.R.layout.simple_spinner_item);
    spKendaraan.setAdapter(adapter1);

what I want is arrays from spinner 2 is depends on what i select in spinner 1

Spinner 2

@Override
    public void onItemSelected (AdapterView < ? > adapterView, View view,int position, long id){
    if (spKendaraan.getSelectedItem().equals("Mobil")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih", Toast.LENGTH_SHORT).show();
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_mobil, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_motor, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    }
}

my code above doesn't work, am I making logic/method mistakes?

tl;dr

if spinnerA == x{
spinnerB = m
}
else {
spinnerB = n
}

since i'm new in android, any example would be very appreciated.

解决方案

I don't know why your code is not working but following is a example code for you which works as you needed,I hope this will help.

XML layout file:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.stackspinner.MainActivity" >

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/spinner1" />

</RelativeLayout>

Activity:

public class MainActivity extends Activity implements OnItemSelectedListener {

Spinner spinner1, spinner2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,
            R.array.array1, android.R.layout.simple_spinner_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {
    if (spinner1.getSelectedItem().equals("mobile")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih",
                Toast.LENGTH_SHORT).show();

        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.mobile_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.motor_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    }

}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
}

}

Strings:

<resources>

<string name="app_name">Application Name</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="array1">
    <item>mobile</item>
    <item>motor</item>
</string-array>
<string-array name="mobile_array">
    <item>Android</item>
    <item>blackberry</item>
    <item>apple</item>
</string-array>
<string-array name="motor_array">
    <item>Audi</item>
    <item>BMW</item>
    <item>unicorn</item>
</string-array>

这篇关于如何制作微调器取决于另一个微调器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆