文章出處

---恢復內容開始---

一、前段代碼

<Spinner
    android:id="@+id/spin"
    android:paddingTop="10px"
    android:layout_width="fill_parent"
    android:layout_height="50sp"/>

<Button
    android:id="@+id/addList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="添加" />

二、接下來新建一個下拉列表的視圖資源,即每個Item的TextView,我們把它命名為dropdown.xml,我們把它放到drawable中,代碼為:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv1"
    android:layout_width="fill_parent"
    android:layout_height="20sp"
    android:singleLine="true"
    style="?android:attr/spinnerDropDownItemStyle"
    />

三、創建Adapter

這里介紹下兩個函數:

1.ArrayAdapter.ArrayAdapter(Context context,int textViewResourcId,List<String> objects)

我們可以通過它創建新的Adapter對象,這里需要三個參數:

(1)context上下文關系,就是這個Adapter屬于哪個Activity,屬于哪個應用程序。

(2)textViewResourcId TextView的資源id

 (3)  最后一個參數是你要向下拉列表中添加的數據,可以是一個靜態的String數組,也可以是一個動態的List<String>;

2.AdapterView.setOnItemSelectedListener(OnItemSelectedListener listener),使用這個方法為Spinner對象設置監聽器。這里參數是OnItemSelectedListener 接口,實現這個接口需要重寫兩個方法:

(1)public void onItemSelected(AdapterView<?> parent, View view,int position, long id) 

這個方法中可以完成當選項被選中時要做的處理。四個參數的含義:

  • AdapterView<?> parent,這個類似context,只是范圍比較下,指你當前操作的AdapterView
  • View view ,這個參數是你具體單擊的那個TextView對象
  • int position 這個參數的意思是你單擊的那個view在整個AdaterView中的位置
  • long id 單擊view的id

(2)public void onNothingSelected(AdapterView<?> parent) 

這個回調函數在AdapterView中沒有選項時調用。

完整代碼如下:

    private Spinner spinner;
    private TextView tv;
    private ArrayAdapter<String> adapter;
    private static final String[] years = { "小于1年", "1年-3年", "3年-5年", "5年以上" };
    private ArrayList<String> array = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
        spinner = (Spinner) findViewById(R.id.spin);

        tv = (TextView) findViewById(R.id.textView1);

        for (int i = 0; i < years.length; i++) {
            array.add(years[i]);
        }
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, array);
        adapter.setDropDownViewResource(R.drawable.dropdown);
        
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO 自動生成的方法存根
                String seleted = array.get(position);
                tv.setText(seleted);
                parent.setVisibility(View.VISIBLE);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO 自動生成的方法存根
                tv.setText("您沒有選擇");
            }

        });

 

---恢復內容結束---


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()