Android开发中使用Spinner控件出现的问题

来源:互联网 发布:同志软件有那些 编辑:程序博客网 时间:2024/06/05 17:18

我们在开发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)

Added in API level 1

Constructor

Parameters
contextThe current context.textViewResourceIdThe resource ID for a layout file containing a TextView to use when instantiating views.objectsThe 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

这样就不会再提示错误 了

原创粉丝点击