在使用此code(摘自here)我得到以下错误:
构造ArrayAdapter(新 AdapterView.OnItemSelectedListener(){}, INT,字符串[])未定义
任何人都可以帮助纠正呢?谢谢
私人无效setDynamicSpinnerBE(){
beSpinner =(微调)findViewById(R.id.spBE);
最终的String [] itemsSpinner2;
lensSpinner.setOnItemSelectedListener(新OnItemSelectedListener(){
公共无效onItemSelected(适配器视图<>母公司视图中查看,
INT位置,长的id){
整型长焦点=(整数)parent.getAdapter()的getItem(
位置);
itemsSpinner2 = getBellowsExtension(长焦点,maxBellows,
precision);
ArrayAdapter< CharSequence的> beAdapter =新的ArrayAdapter< CharSequence的>(
对此,android.R.layout.simple_spinner_item,
itemsSpinner2);
beAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
beSpinner.setAdapter(beAdapter);
}
公共无效onNothingSelected(适配器视图<>母公司){
beSpinner.setAdapter(空);
}
}
);
...
}
解决方案
在构造新的 ArrayAdapter
以下行:
ArrayAdapter< CharSequence的> beAdapter =新的ArrayAdapter< CharSequence的>(这一点,
这
指向 OnItemSelectedListener
类,你是在和不父视图当前的情况下,这是问题出现时,因为 ArrayAdapter
没有匹配的构造。你应该尝试使用 MyParentView.this
(其中 MyParentView
是视图的名字你是),而不是传递相应的实例。
In using this code (adapted from here) I get the following error:
The constructor ArrayAdapter(new AdapterView.OnItemSelectedListener(){}, int, String[]) is undefined
Can anyone help correct this? Thanks
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);
}
}
);
...
}
解决方案
In the constructor to your new ArrayAdapter
on the following line:
ArrayAdapter<CharSequence> beAdapter = new ArrayAdapter<CharSequence>(this,
this
points to the current instance of the OnItemSelectedListener
class you are in and not the parent view, this is where the problem occurs because ArrayAdapter
does not have a matching constructor. You should try using MyParentView.this
(where MyParentView
is the name of the view you are in) instead to pass the appropriate instance.