Android开发手记(10) 下拉菜单Spinner
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android开发手记(10) 下拉菜单Spinner,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5964字,纯文字阅读大概需要9分钟。
内容图文
1、自定义Spinner
首先,定义Spinner要显示的项目列表/res/values/arrays.xml
1 <? xml version="1.0" encoding="utf-8" ?> 2 < resources > 3 < string-array name ="citys" > 4 < item >南京</item>5<item>徐州</item>6<item>常州</item>7</string-array>8</resources>
然后,定义一个ArrayAdapter<String>并绑定到上面定义的项目列表。
1 ArrayAdapter<String> adapter = ArrayAdapter.createFromResource( 2this, R.array.citys, android.R.layout.simple_spinner_item); 3 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
其中,createFromResource()的函数原型为:
createFromResource(Context context, int textArrayResId, int textViewResId);
然后,将adapter绑定到spinner:
1 spinner.setAdapter(adapter);
最后,为spinner添加一个setOnItemSelectedListener即可:
1 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 2 @Override 3publicvoid onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 4 Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(), 5 Toast.LENGTH_SHORT).show(); 6 } 7 8 @Override 9publicvoid onNothingSelected(AdapterView<?> adapterView) { 10 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT); 11 } 12 });
完整代码为:
1 public class MainActivity extends AppCompatActivity { 2 3private Spinner spinner; 4 5 @Override 6protectedvoid onCreate(Bundle savedInstanceState) { 7super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 910 spinner = (Spinner) findViewById(R.id.spinner); 1112 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 13this, R.array.citys, android.R.layout.simple_spinner_item); 14 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 15 spinner.setAdapter(adapter); 1617 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 18 @Override 19publicvoid onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 20 Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(), 21 Toast.LENGTH_SHORT).show(); 22 } 2324 @Override 25publicvoid onNothingSelected(AdapterView<?> adapterView) { 26 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT); 27 } 28 }); 2930 } 3132 }
2、动态改变Spinner
想动态改变Spinner的内容,需要将Spinner的内容绑定到一个Adapter上。通过增加ArrayAdapter的内容来动态改变Spinner的内容。
1 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item); 2 adapter.add("南京"); 3 adapter.add("徐州"); 4 adapter.add("常州"); 5 spinner.setAdapter(adapter);
(1)增加一个项
通过在EditText输入需要增加的内容,之后单击一个Button来增加Spinner。为Button添加以下事件即可。
1 btnAdd.setOnClickListener(new View.OnClickListener() { 2 @Override 3publicvoid onClick(View view) { 4 String city = editText.getText().toString(); 5for (int i = 0; i < adapter.getCount(); i++) { 6if (city.equals(adapter.getItem(i))) { 7 Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show(); 8return; 9 } 10 } 11if (!city.trim().equals("")) { 12 adapter.add(city); 13int pos = adapter.getPosition(city); 14 spinner.setSelection(pos); 15 editText.setText(""); 16 } 17 } 18 });
(2)删除一个项
通过在Spinner选中需要删除的内容,之后单击一个Button来删除Spinner。为Button添加以下事件即可。
1 btnDel.setOnClickListener(new View.OnClickListener() { 2 @Override 3publicvoid onClick(View view) { 4if (spinner.getSelectedItem() != null) { 5 adapter.remove(spinner.getSelectedItem().toString()); 6 editText.setText(""); 7if (adapter.getCount() == 0) { 8 Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show(); 9 } 10 } 11 } 12 });
3、完整代码如下:
1 import android.support.v7.app.AppCompatActivity; 2 import android.os.Bundle; 3 import android.view.View; 4 import android.widget.AdapterView; 5 import android.widget.ArrayAdapter; 6 import android.widget.Button; 7 import android.widget.EditText; 8 import android.widget.Spinner; 9 import android.widget.Toast; 10 11 public class MainActivity extends AppCompatActivity { 1213private Spinner spinner; 14private EditText editText; 15private Button btnAdd; 16private Button btnDel; 17private ArrayAdapter<String> adapter; 1819 @Override 20protectedvoid onCreate(Bundle savedInstanceState) { 21super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 2324 btnAdd = (Button) findViewById(R.id.btnAdd); 25 btnDel = (Button) findViewById(R.id.btnDel); 26 editText = (EditText) findViewById(R.id.editText); 27 spinner = (Spinner) findViewById(R.id.spinner); 2829 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item); 30 adapter.add("南京"); 31 adapter.add("徐州"); 32 adapter.add("常州"); 33 spinner.setAdapter(adapter); 3435 btnAdd.setOnClickListener(new View.OnClickListener() { 36 @Override 37publicvoid onClick(View view) { 38 String city = editText.getText().toString(); 39for (int i = 0; i < adapter.getCount(); i++) { 40if (city.equals(adapter.getItem(i))) { 41 Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show(); 42return; 43 } 44 } 45if (!city.trim().equals("")) { 46 adapter.add(city); 47int pos = adapter.getPosition(city); 48 spinner.setSelection(pos); 49 editText.setText(""); 50 } 51 } 52 }); 53 btnDel.setOnClickListener(new View.OnClickListener() { 54 @Override 55publicvoid onClick(View view) { 56if (spinner.getSelectedItem() != null) { 57 adapter.remove(spinner.getSelectedItem().toString()); 58 editText.setText(""); 59if (adapter.getCount() == 0) { 60 Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show(); 61 } 62 } 63 } 64 }); 65 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 66 @Override 67publicvoid onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 68 editText.setText(adapter.getItem(i)); 69 } 7071 @Override 72publicvoid onNothingSelected(AdapterView<?> adapterView) { 7374 } 75 }); 7677 } 7879 }
原文:http://www.cnblogs.com/doodle777/p/Spinner_Usage.html
内容总结
以上是互联网集市为您收集整理的Android开发手记(10) 下拉菜单Spinner全部内容,希望文章能够帮你解决Android开发手记(10) 下拉菜单Spinner所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。