【问题标题】:Check item selected on two spinners?检查在两个微调器上选择的项目?
【发布时间】:2014-09-12 17:54:15
【问题描述】:

我的布局上有两个微调器,如下所示:

public class DemoActivity extends Activity {

    private static final String STATE_SCALE = "state-scale";
    private static final String STATE_CENTER_X = "state-center-x";
    private static final String STATE_CENTER_Y = "state-center-y";
    private static final int CAMERA_REQUEST = 1888; 
    private ImageView imageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
        String text1 = spinner1.getSelectedItem().toString();
        Spinner spinner3 = (Spinner) findViewById(R.id.spinner3);
        String text3 = spinner3.getSelectedItem().toString();
        if (text1.equals("Harris Academy"))
            Harris(spinner1);
        if (text1.equals("Harris Academy") && text3.equals("Ground Floor")) {
            Toast.makeText(getBaseContext(), text3, Toast.LENGTH_LONG).show();
            try {
                SubsamplingScaleImageView imageView =
                        (SubsamplingScaleImageView) findViewById(id.imageView);
                imageView.setImageAsset("DSC00277.png");

                if (savedInstanceState != null && 
                        savedInstanceState.containsKey(STATE_SCALE) &&
                        savedInstanceState.containsKey(STATE_CENTER_X) &&
                        savedInstanceState.containsKey(STATE_CENTER_Y)) {
                    imageView.setScaleAndCenter(savedInstanceState.getFloat(STATE_SCALE),
                            new PointF(savedInstanceState.getFloat(STATE_CENTER_X),
                            savedInstanceState.getFloat(STATE_CENTER_Y)));
                }
            } catch (IOException e) {
                Log.e(DemoActivity.class.getSimpleName(), "Could not load asset", e);
            }
        }
    }
}

当应用程序启动时,这工作正常,它获取微调器 1 和微调器 3 的值,然后根据值执行某些操作。

如何扩展它,以便当我在任一微调器上选择一个项目时,它会根据新值执行某些操作?

【问题讨论】:

  • 你试过OnItemSelectedListener吗?
  • 你应该在 findviewbyid s 之后为微调器添加该代码。
  • 尝试给出以下错误“AdapterView 类型中的方法 setOnItemSelectedListener(AdapterView.OnItemSelectedListener) 不适用于参数 (new OnItemSelectedListener(){})”

标签: java android select spinner


【解决方案1】:

要在用户从微调器中选择项目时获取更新的值,

你必须实现 spinner 的 onItemSelectedListner

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{
             public void onItemSelected(AdapterView<?> parent, View view, 
                int pos, long id) {

         // Do your stuff here for spinner1

        }

        public void onNothingSelected(AdapterView<?> parent) {

        }

}); 
spinner3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{
             public void onItemSelected(AdapterView<?> parent, View view, 
                int pos, long id) {

         // Do your stuff here for spinner3

        }

        public void onNothingSelected(AdapterView<?> parent) {

        }

}); 

【讨论】:

  • 谢谢你,你能帮我在上面的myyy代码中插入它的位置吗?我在设置视图后尝试插入它,但无论我在哪里插入它都会出错
  • 你可以在最后的onCreate方法中添加这段代码
【解决方案2】:

如果您想在Spinner 中操作选择项目的视图或数据,您需要实现 ItemSelectedListener 到特定的Spinner

示例代码:

// in onCreate() or where you want to bind this Views with XML views
{
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner3 = (Spinner) findViewById(R.id.spinner3);
    // mItemSelectedListener Object of OnItemSelectedListener to handle Item Selection to Spinners.
    spinner1.setOnItemSelectedListener(mItemSelectedListener);
    spinner3.setOnItemSelectedListener(mItemSelectedListener);
}

// Creating an Object of Anonymous Class so no need to create another instance for same class
// OutSide of onCreate() method.
OnItemSelectedListener mItemSelectedListener = new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch (view.getId()) {
        case R.id.spinner1:
              // Manipulates Views at selection of item in Spinner1
            break;
        case R.id.spinner3:
              // Manipulates Views at selection of item in Spinner3
            break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {}
};

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多