English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
최근 프로젝트에서 Android Spinner를 사용하면서 간단한 예제를 작성하여 사용법을 테스트했습니다.
Spinner
是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置Android:entries=“@array/spinner_data”
其中spinner_data为在string中设置的数组。数组中由固定写好的值。此时便可在界面设置好下拉列表。
<Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="17dp" android:entries="@array/spinner_data"/>
当然为了用户体验好,可以设置 android:spinnerMode="dialog"属性,可以使下拉列表有弹出框。
适配器:
适配器主要负责从数据源中抓取数据,传向各个UI组件。主要的适配器adapter由ArrayAdapter和BaseAdapter。 即适配器负责从某个数据源比如数组中得到数据传向Spinner,显示在界面上。
首先定义数据源
private String[] ss=new String[]{ "猫咪", "老虎", "狮子", };
数据源2
private List<String> list=new ArrayList<String>(); list.add("百度"); list.add("腾讯"); list.add("阿里巴巴");
其次定义一个类Myadapter继承与抽象类BaseAdapter,抽象方法有四个。
private class Myadapter extends BaseAdapter{ @Override public int getCount</span>() { // TODO Auto-generated method stub return ss.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView</span>(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView textView = new TextView(MainActivity.this); textView.setText(ss[position]); return textView; }
그런 다음 메인 함수에서
Spinner spinner = (Spinner) findViewById(R.id.spinner);1); BaseAdapter adapter = new Myadapter(); spinner.setAdapter(adapter);
Spinner 컨트롤을 먼저 찾고 new로 어댑터를 인스턴스화합니다. adapter 어댑터를 통해 데이터 소스 ss의 데이터를 추출합니다.
BaseAdapter 어댑터에서 가장 중요한 메서드는 getCount()와 getView() 메서드입니다. 전자는 데이터 소스의 길이를 반환하고, 후자는 일부 작업을 수행합니다.
물론 더 간단한 ArrayAdapter 어댑터를 사용할 수 있습니다.
Spinner spinner = (Spinner) findViewById(R.id.spinner);1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ss); spinner.setAdapter(adapter);
위 문장을 통해 배열 ss에서 직접 위치를 찾을 수 있습니다.
읽어주셔서 감사합니다. 많은 도움이 되길 바랍니다. 이 사이트에 대한 지원에 감사합니다!