Android中的常用控件之Spinner DatePicker AutoCompleteTextView

Spinner

什么是Spinner?

public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener

A view that displays one child at a time and lets the user pick among them. The items in the Spinner come from the Adapter associated with this view. 创建一个Spinner的方法: ① 在布局文件中添加Spinner:

② 在strings.xml文件中添加一个string-array:


Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

③ 在Activity中创建一个ArrayAdapter:

Spinner spinner = (Spinner) findViewById(R.id.spinnerId);
//createFromResource的第三个参数为设置Spinner的样式,使用系统自带的
ArrayAdapter adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array,
android.R.layout.simple_spinner_item);
//设置Spinner的下拉样式,也使用了系统自带的样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt(“Test”);
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

public class ArrayAdapter extends BaseAdapter implements Filterable

A concrete BaseAdapter that is backed by an array of arbitrary objects. By default this class expects that the provided resource id references a single TextView. If you want to use a more complex layout, use the constructors that also takes a field id. That field id should reference a TextView in the larger layout resource. ④ 为Spinner编写onItemSelectedListener()对应的事件:

class SpinnerOnSelectedListener implements OnItemSelectedListener{

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position,
        long id) {
System.out.println(adapterView.getItemAtPosition(position).toString(););
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {
    System.out.println("onNothingSelected()");
}

}

除此之外,我们也可以使用List创建一个动态添加内容的Spinner:

Spinner spinner = (Spinner) findViewById(R.id.spinnerId);
List list = new ArrayList();
list.add(“item1”);
list.add(“item2”);
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item,R.id.textViewId,list);
spinner.setAdapter(adapter);
spinner.setPrompt(“Test”);
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

DatePicker和DatePickerDialog

DatePicker和DatePickerDialog是Android中的日期空间,用于设置日期并进行相应的操作。

public class DatePicker extends FrameLayout

This class is a widget for selecting a date. The date can be selected by a year, month, and day spinners or a CalendarView. The set of spinners and the calendar view are automatically synchronized. The client can customize whether only the spinners, or only the calendar view, or both to be displayed. Also the minimal and maximal date from which dates to be selected can be customized.

public class DatePickerDialog extends AlertDialog implements DialogInterface.OnClickListener DatePicker.OnDateChangedListener

A simple dialog containing an DatePicker. 编写一个DatePickerDialog的方法: ① 使用匿名内部类实现DatePickerDialog.OnDateSetListener监听器:

DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    System.out.println("Date: " + year + "/" + monthOfYear + "/" + dayOfMonth);
}

};

② 覆盖Activity中的onCreateDialog()方法:

protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
return new DatePickerDialog(this, onDateSetListener, 2011, 06, 13);
}
return null;
}

③ 在合适的地方调用showDialog(1)方法 注意,这个日期控件的月份是从0开始的:monthOfYear 从0~11

AutoCompleteTextView

public class AutoCompleteTextView extends EditText implements Filter.FilterListener

An editable text view that shows completion suggestions automatically while the user is typing. The list of suggestions is displayed in a drop down menu from which the user can choose an item to replace the content of the edit box with. 编写AutoCompleteTextView的方法: ① 在Activity的布局文件中添加AutoCompleteTextView:

② 新建一个布局文件list1用于设置自动完成控件的提示框样式:


③ 在Activity中获取AutoCompleteTextView并使用ArrayAdapter设置AutoCompleteTextView:

AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autocompleteId);
//创建一个list,为ArrayAdapter提供数据
List list = new ArrayList();
list.add(“arthinking”);
list.add(“answer”);
list.add(“awk”);
list.add(“android”);
ArrayAdapter arrayAdapter = new ArrayAdapter(this,R.layout.list1,list);
autoCompleteTextView.setAdapter(arrayAdapter);

也可以往ArrayAdapter中传入数组,其构造函数包括以下几个: Public Constructors ArrayAdapter(Context context, int textViewResourceId) Constructor ArrayAdapter(Context context, int resource, int textViewResourceId) Constructor ArrayAdapter(Context context, int textViewResourceId, T[] objects) Constructor ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) Constructor ArrayAdapter(Context context, int textViewResourceId, List objects) Constructor ArrayAdapter(Context context, int resource, int textViewResourceId, List objects) Constructor

(特别说明:本文部分内容是在观看marschen的Android视频教程时做的笔记,感谢marschen推出的视频教程,这里也推荐给大家:http://www.marschen.com/portal.php)

arthinking wechat
欢迎关注itzhai公众号