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

Android 控件之 Spinner下拉列表 使用简单总结

2013-01-23 13:44 726 查看
在做项目时,经常用到下拉列表,下拉列表的数据源不管是本地数据还是从服务器下载缓存到本地的数据,道理大同小异,设置下拉列表的步骤是一样的。简单总结设置Spinner的步骤如下:

1. 建立一个需要显示存放Spinner控件的layout布局文件。

2. 建立一个存放Spinner列表控件内容样式的布局文件(可以使用系统的)。

3. 在需要处理Spinner控件的Activity中,获取Spinner的数据源。例如本地数据源String[]
datasource = {“test”,”native”,”code”}。

4. 在Activity中定义一个内容适配器adapter,用来装载Spinner数据和显示样式(样式可以自定义或者使用系统的)。

5. 给下拉列表设置内容样式。例如:arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)。

6. 下拉列表装载上面的适配器。

7. 如果进行动态添加或删除下拉列表内容,均是通过添加或删除内容适配器adpter的数据来实现的。

简单Demo如下:

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
/**
* 下拉列表显示
* */
public class SpinnerActivity extends Activity {

//定义下拉列表
private Spinner spinner_info = null;
//定义为下拉列表(spinner)添加一条信息的Button按钮
private Button btn_spinner_add = null;
//定义为下拉列表(spinner)删除一条信息的Button按钮
private Button btn_spinner_del = null;
//定义一个字符串数组
private String[] args = {"jinan","zhonggong","licheng"};
//内容适配器的数据源,由于用到了动态添加或删除下拉列表数据,因此数据源采用了动态list数组而非静态String数组
private List<String> list = null;
//定义一个内容适配器
private ArrayAdapter<String> arrayAdapter = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
//初始化控件信息
initView();
}

/**
* 初始化控件信息
* */
private void initView(){
//数据源添加数据
list = new ArrayList<String>();
for(String arg:args){
list.add(arg);
}
//spinner对象
spinner_info = (Spinner)findViewById(R.id.spinner_info);
//定义并初始化内容适配器,加载数据及样式,采用系统自带的样式
arrayAdapter = new ArrayAdapter<String>(SpinnerActivity.this,android.R.layout.simple_spinner_item,list);
//设置下拉列表的显示样式(风格),采用系统自带的样式(风格)
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//为下拉列表添加适配器
spinner_info.setAdapter(arrayAdapter);
/*   下拉列表选择事件   */
spinner_info.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(SpinnerActivity.this, "我点选了"+args[arg2].toString(), Toast.LENGTH_SHORT).show();

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {

}

});
/* 下拉列表(spinner)添加一条信息 */
btn_spinner_add = (Button)findViewById(R.id.btn_spinner_add);
btn_spinner_add.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {//
String add_info = "我是新添加的数据";
//向内容适配器添加一条信息
arrayAdapter.add(add_info);
//获取新添加的信息的位置
int position = arrayAdapter.getPosition(add_info);
//设置新添加的信息为选中状态
spinner_info.setSelection(position);
}
});
/* 下拉列表(spinner)删除一条信息 */
btn_spinner_del = (Button)findViewById(R.id.btn_spinner_delete);
btn_spinner_del.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//移除所选信息
arrayAdapter.remove(spinner_info.getSelectedItem().toString());
}
});
}
}








关于下拉列表的其他显示样式(风格),如带单选按钮、多选之类的,道理差不多,留着备用,自己参考。

备注:欢迎大家补充spinner用法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: