• android 开发-spinner下拉框控件的实现


    Android提供实现下拉框功能的非常实用的控件Spinner。

      spinner控件需要向xml资源文件中添加spinner标签,如下:

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/textView1"
            android:layout_centerHorizontal="true" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/spinner1"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="16dp"
            android:textSize="20sp"
            android:text="所选城市" />

      添加完资源控件后,在activity中,添加代码:

    package com.example.android_spinner2;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    
    public class MainActivity extends Activity {
        private Spinner spinner ;
        private ArrayAdapter adapter ;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            this.spinner =(Spinner) this.findViewById(R.id.spinner1);
            //两种方式给下拉列表注册适配器
            //1 :new 适配器对象(content对象,样式ID,数据集合)
            adapter = new ArrayAdapter<String>(this, 
                    android.R.layout.simple_spinner_dropdown_item, getDataSource());
            spinner.setAdapter(adapter);
        }
        public List<String> getDataSource(){
            List<String> list = new ArrayList<String>() ;
            list.add("北京");
            list.add("上海");
            list.add("广州");
            list.add("长沙");
            return list  ;
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }
    在模拟其中运行,将得到spinner的显示效果:

      从官方的API可知,官方提供另外一种为spiner注册适配器的方式。示例代码如下:

    package com.example.android_spinner2;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.Toast;
    /**
    *为实现item选择后的提供监听效果,spinner所在的activity可以实现OnItemSelectedListener接口,来实现选中效果的展示。
    */
    public class MainActivity extends Activity implements OnItemSelectedListener{ private Spinner spinner ; private ArrayAdapter<CharSequence> adapter ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.spinner =(Spinner) this.findViewById(R.id.spinner1); //两种方式给下拉列表注册适配器 //2 :.createFromResource(content对象,xml中数组id,样式ID) adapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.planets_array,android.R.layout.simple_spinner_dropdown_item ); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); //注册监听器 spinner.setOnItemSelectedListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String item = (String) spinner.getItemAtPosition(position); Toast.makeText(MainActivity.this, "您选中了"+item+"选项", 1).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }

      需要注意的是,第二种方式需要在string资源文件中添加数组:

       <string-array name="planets_array">
            <item>Mercury</item>
            <item>Venus</item>
            <item>Earth</item>
        </string-array

      运行项目,同样能得到想要的下拉框列表。

      

  • 相关阅读:
    John Resig 见面会视频
    《程序员羊皮卷》书评
    用 JavaScript 对 JSON 进行模式匹配 (Part 2 实现)
    工具:开发者使用,企业埋单
    「云端 JavaScript 漫游指南」
    如何让你的网站支持 IE9 Pinned Site (Part 1 理论)
    世界顶级黑客自传:Ghost in the Wires
    MVP Summit 2010 Trip (WA)
    Apple 谈论产品 vs Microsoft 谈论技术
    IBatisNet开发使用小结 之二
  • 原文地址:https://www.cnblogs.com/HEWU10/p/4326344.html
Copyright © 2020-2023  润新知