您的位置:首页 > 移动开发 > Android开发

Android下的下拉列表框Spanner

2016-03-07 23:17 337 查看

Android下的下拉列表框Spanner开发,可以分为五个步骤

1:定义数据源,用来要展示的数据:

2:接着是定义控件

3;然后将数据设置给适配器

4:将适配器绑定给控件

5:监听事件

下面是实例:
首先新建一个名为spanner的XML布局文件,用来给spanner的每一项布局(也可以不用这个用android自带的)
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" >

<TextView

android:id="@+id/text1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<TextView

android:id="@+id/text2"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

接下来activity_mian.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.lijianbao.spinner.MainActivity" >

<TextView

android:id="@+id/text"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

<Spinner

android:id="@+id/spinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

最后看java代码

package com.lijianbao.spinner;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.SimpleAdapter;

import android.widget.Spinner;

import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

/**

* spinner:控件

* str1,str2:数据源

*/

private TextView text;

private Spinner spinner;

private String [] str1;

private String [] str2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//1:创建数据源

str1 = new String[]{"姓名","性别","爱好","专业"};

str2 = new String[]{"李建宝","男","撸代码","软件工程"};

//2:获取控件

text = (TextView) findViewById(R.id.text);

spinner = (Spinner) findViewById(R.id.spinner);

/*

* 把数据设置给适配器

* this:上下文

* getDate():数据源

* R.layout.list_test:列布局

* new String[]{"title","name"}

* new int[]{R.id.img,R.id.tv}

*/

SimpleAdapter adapter = new SimpleAdapter(this, getDate(), R.layout.spinner, new String[]{"title","name"},

new int[]{R.id.text1,R.id.text2});

//把适配器绑定给控件

spinner.setAdapter(adapter);

//监听事件(SimpleAdapter 适配器用setOnItemSelectedListener监听)

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView<?> parent, View view,

int position, long id) {

// TODO Auto-generated method stub

text.setText(str1[position]+" "+str2[position]);

}

@Override

public void onNothingSelected(AdapterView<?> parent) {

// TODO Auto-generated method stub

text.setText(str1[0]+" "+str2[0]);

}

});

}

//将数据封装在List中

public List<Map<String,String>> getDate(){

List<Map<String,String>> list = new ArrayList<Map<String,String>>();

Map<String, String> map = null;

for(int i = 0;i<str1.length;i++){

map = new HashMap<String, String>();

map.put("title", str1[i]);

map.put("name", str2[i]);

list.add(map);

}

return list;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: