层叠式旋转器不适合

时间:2017-08-07 09:14:01

标签: android android-spinner

我是android的新手,我正在尝试实现级联微调器。当我选择第一个微调器时,它应该根据第一个微调器选择来填充第二个微调器。我差不多完成了,但是在第二个微调器中我无法选择值。当我选择它正在消失时。请帮助我。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class DummyMain extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    public Spinner spinner1, spinner2;
    public String[] spinner1Values = {"A", "B"}, valuesForA = {"1", "2"}, valuesForB = {"3", "4", "5", "1"};
    public ArrayAdapter<String> adapterForSpinner1, adapterForSpinner2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dummy_main);

        spinner1 = (Spinner) findViewById(R.id.spinner1);
        spinner2 = (Spinner) findViewById(R.id.spinner2);

        adapterForSpinner1 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, spinner1Values);
        adapterForSpinner1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapterForSpinner1);
        spinner1.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int i, long l) {
        Toast.makeText(this, "Result "+spinner1.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
        if (parent.getId() == R.id.spinner1) {
            if (spinner1.getSelectedItem().toString().equals("A")) {
                adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                        android.R.layout.simple_spinner_item,valuesForA);
                adapterForSpinner2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner2.setAdapter(adapterForSpinner2);
                spinner2.setOnItemSelectedListener(this);

            } else {
                adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                        android.R.layout.simple_spinner_item,valuesForB);
                adapterForSpinner2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner2.setAdapter(adapterForSpinner2);
                spinner2.setOnItemSelectedListener(this);
            }
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

2 个答案:

答案 0 :(得分:0)

发现问题,我已经修好了。

ArrayAdapter<String> adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                            android.R.layout.simple_spinner_item, valuesForB);

我已将 getApplicationConetxt()更改为。它有效: - )

ArrayAdapter<String> adapterForSpinner2 = new ArrayAdapter<String>(this,
                            android.R.layout.simple_spinner_item, valuesForB);

答案 1 :(得分:0)

尝试将其添加到您的DummyMain中

@Override
    public void onPointerCaptureChanged(boolean hasCapture) {
    }