利用这个时间,小马来写下如果动态添加Spinner里面的选项的实现,相信朋友们都碰到过级联的类似省市之间的Spinner吧?原理跟小马做的简单的这个是一样的,吼吼,简单说就是:父Spinner控件选项改变影响子Spinner,子影响不到父Spinner,今天小马只讲下单个Spinner控件选项动态添加,先贴下效果较,后面贴代码:
![]()
![]()
![]()
![]()
下面来看下实现的代码,很简单的哦,主要看下实现的小巧门:
- package com.xiaoma.www;
-
- 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.EditText;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
-
-
-
-
-
-
-
-
- public class DynamicSpinnerDemoActivity extends Activity {
-
-
- private Button add;
- private Button remove;
- private Spinner spinner;
- private EditText input;
- private List<String> arrayList;
- private String city[];
- private ArrayAdapter<String> adapter;
- private TextView tView;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
-
-
-
-
- init();
- }
-
-
-
-
- private void init() {
-
- add = (Button) findViewById(R.id.button1);
- remove = (Button) findViewById(R.id.button2);
- spinner = (Spinner) findViewById(R.id.spinner1);
- tView = (TextView) findViewById(R.id.textView1);
- arrayList = new ArrayList<String>();
- input = (EditText) findViewById(R.id.editText1);
- city = new String[] { "南京", "高淳", "镇江", "安徽",
- "常州", "北京", "临夏(小马老家)","兰州", "辽宁",
- "大连", "苏州", "杭州" };
-
-
-
-
-
- for (int i = 0; i < city.length; i++) {
- arrayList.add(city[i]);
- }
-
-
-
-
-
-
-
-
-
-
- adapter = new ArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item, arrayList);
- spinner.setAdapter(adapter);
-
-
-
-
- add.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- String aString = input.getText().toString();
- if (!"".equals(aString)) {
- for (int j = 0; j < adapter.getCount(); j++) {
- if (adapter.getItem(j).equals(aString)) {
- return;
- }
- }
-
- adapter.add(aString);
- int pos = adapter.getPosition(aString);
- spinner.setSelection(pos);
- input.setText("");
- }
-
- }
- });
- remove.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- if (spinner.getSelectedItem() != null) {
- adapter.remove(spinner.getSelectedItem().toString());
- input.setText("");
- }
- }
- });
-
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id) {
- tView.setText(parent.getSelectedItem().toString());
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
-
- }
- });
-
- }
- }
最后,如果觉得有用的话就得深究咯,实际开发中不会这么简单的,这个DEMO只是小马做的测试动态添加删除的功能,实际开发中得根据需要,自己定义实现啦,这里小马只讲下简单的实现,代码看不爽的话,下载附件,修改修改下,就是你的实现咯,吼吼,谢谢
附件:http://down.51cto.com/data/2359582
本文转自华华世界 51CTO博客,原文链接:http://blog.51cto.com/mzh3344258/753402,如需转载请自行联系原作者