标签:
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( 2 this, 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 3 public void 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 9 public void onNothingSelected(AdapterView<?> adapterView) { 10 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT); 11 } 12 });
完整代码为:
1 public class MainActivity extends AppCompatActivity { 2 3 private Spinner spinner; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 spinner = (Spinner) findViewById(R.id.spinner); 11 12 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 13 this, R.array.citys, android.R.layout.simple_spinner_item); 14 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 15 spinner.setAdapter(adapter); 16 17 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 18 @Override 19 public void 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 } 23 24 @Override 25 public void onNothingSelected(AdapterView<?> adapterView) { 26 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT); 27 } 28 }); 29 30 } 31 32 }
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 3 public void onClick(View view) { 4 String city = editText.getText().toString(); 5 for (int i = 0; i < adapter.getCount(); i++) { 6 if (city.equals(adapter.getItem(i))) { 7 Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show(); 8 return; 9 } 10 } 11 if (!city.trim().equals("")) { 12 adapter.add(city); 13 int 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 3 public void onClick(View view) { 4 if (spinner.getSelectedItem() != null) { 5 adapter.remove(spinner.getSelectedItem().toString()); 6 editText.setText(""); 7 if (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 { 12 13 private Spinner spinner; 14 private EditText editText; 15 private Button btnAdd; 16 private Button btnDel; 17 private ArrayAdapter<String> adapter; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 24 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); 28 29 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); 34 35 btnAdd.setOnClickListener(new View.OnClickListener() { 36 @Override 37 public void onClick(View view) { 38 String city = editText.getText().toString(); 39 for (int i = 0; i < adapter.getCount(); i++) { 40 if (city.equals(adapter.getItem(i))) { 41 Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show(); 42 return; 43 } 44 } 45 if (!city.trim().equals("")) { 46 adapter.add(city); 47 int pos = adapter.getPosition(city); 48 spinner.setSelection(pos); 49 editText.setText(""); 50 } 51 } 52 }); 53 btnDel.setOnClickListener(new View.OnClickListener() { 54 @Override 55 public void onClick(View view) { 56 if (spinner.getSelectedItem() != null) { 57 adapter.remove(spinner.getSelectedItem().toString()); 58 editText.setText(""); 59 if (adapter.getCount() == 0) { 60 Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show(); 61 } 62 } 63 } 64 }); 65 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 66 @Override 67 public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 68 editText.setText(adapter.getItem(i)); 69 } 70 71 @Override 72 public void onNothingSelected(AdapterView<?> adapterView) { 73 74 } 75 }); 76 77 } 78 79 }
标签:
原文地址:http://www.cnblogs.com/doodle777/p/Spinner_Usage.html