基于Spinner 1中的选择动态更新Spinner2

koe*_*bro 1 java android dynamic spinner

在使用此代码(从此处改编)时,我收到以下错误:

构造函数ArrayAdapter(new AdapterView.OnItemSelectedListener(){},int,String [])未定义

有人可以帮忙纠正这个吗?谢谢

private void setDynamicSpinnerBE() {
    beSpinner = (Spinner) findViewById(R.id.spBE);
    final String[] itemsSpinner2;
    lensSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            Integer focalLength = (Integer) parent.getAdapter().getItem(
                    position);
            itemsSpinner2 = getBellowsExtension(focalLength, maxBellows,
                    precision);

            ArrayAdapter<CharSequence> beAdapter = new ArrayAdapter<CharSequence>(
                    this, android.R.layout.simple_spinner_item,
                    itemsSpinner2);
            beAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            beSpinner.setAdapter(beAdapter);

        }

        public void onNothingSelected(AdapterView<?> parent) {
            beSpinner.setAdapter(null);
        }
    }

    );
    ...
}
Run Code Online (Sandbox Code Playgroud)

Qui*_*son 7

ArrayAdapter以下行的新构造函数中:

ArrayAdapter<CharSequence> beAdapter = new ArrayAdapter<CharSequence>(this,
Run Code Online (Sandbox Code Playgroud)

this指向OnItemSelectedListener您所在类的当前实例而不是父视图,这是问题发生的地方,因为ArrayAdapter没有匹配的构造函数.您应该尝试使用MyParentView.this(您所在MyParentView视图的名称),而不是传递适当的实例.