我们在开发Android程序的时候,使用Spinner控件做联动操作的时候,总是提示所用的方法不对。下面先来看看吧
private Spinner citySpinner=null;
private Spinner areaSpinner=null;
private String[][] aredata=new String[][] {
{"东城","西城","朝阳","大兴"},
{"上海","浦东"},
{"苏州","吴中","新区"},
{"广州","天河"}
};
private ArrayAdapter<CharSequence> adadata=null;
/* (non-Javadoc)
* 联动选择
*/
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
citySpinner = (Spinner) findViewById(R.id.city);
areaSpinner=(Spinner)findViewById(R.id.area);
citySpinner.setOnItemSelectedListener(new spinnerliandong());
}
private class spinnerliandong implements OnItemSelectedListener{
@Override//当选择了某一项之后,联动产生选项
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
// TODO Auto-generated method stub
adadata=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, MainActivity.this.aredata[arg2]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
// TODO Auto-generated method stub
}
}
上面的红色部分总是会提示错误:The constructor ArrayAdapter<CharSequence>(MainActivity.spinnerliandong, int, String[]) is undefined
我们先来看看这个构造方法的原型吧:
public ArrayAdapter(Context context, int textViewResourceId, T[] objects)
Constructor
Parameters
context | The current context. |
---|---|
textViewResourceId | The resource ID for a layout file containing a TextView to use when instantiating views. |
objects | The objects to represent in the ListView. |
注意到了,Context context这个是指整个你的Activity类,是不能用this这样简单的代替的。那我们就改一下吧:
adadata=new ArrayAdapter<CharSequence>(MainActivity.this, android.R.layout.simple_spinner_item, MainActivity.this.aredata[arg2]);
改成蓝色的这样就OK了 Acticity类.this
这样就不会再提示错误 了