Android中动态添加╱删除的Spinner菜单
2010-03-08 15:13
417 查看
实现步骤:
第一步:建立Android 工程:SpinnerDemo。
第二步:编写Activity 的子类别:SpinnerDemo,其程序代码如下:
package com.a3gs.spinner;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class SpinnerDemo extends Activity {
private TextView myTV;
private Spinner mySp;
private EditText myET;
private Button addBtn, delBtn;
private final String[] items = {"北京市", "上海市", "天津市", "福州市"} ;
private ArrayAdapter<String> adapter;
private List<String> allItems;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTV = (TextView) findViewById(R.id.myTV);
myET = (EditText) findViewById(R.id.myET);
addBtn = (Button) findViewById(R.id.addBtn);
delBtn = (Button) findViewById(R.id.delBtn);
mySp = (Spinner) findViewById(R.id.mySpinner);
mySp.setVisibility(View.VISIBLE);
allItems = new ArrayList<String>();
for(int i=0; i < items.length; i++){
allItems.add(items[i]);
}
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, allItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySp.setAdapter(adapter);
mySp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
myTV.setText("您选择的是:" + mySp.getSelectedItem().toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
addBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String ETText = myET.getText().toString();
int len = adapter.getCount();
// 检查所添加的是否已经存在
for(int i = 0; i < len; i++){
if(ETText.equals(adapter.getItem(i))){
return;
}
}
if(!ETText.equals("")){
adapter.add(ETText);
int position = adapter.getPosition(ETText);
mySp.setSelection(position);
myET.setText("");
}
}
});
delBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mySp.getSelectedItem() != null) {
adapter.remove(mySp.getSelectedItem().toString());
myET.setText("");
}
if(adapter.getCount() == 0){
myET.setText("");
}
}
});
}
}
第三步:修改res/layout/main.xml,其代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/myTV"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText
android:id="@+id/myET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/addBtn"
android:layout_width="160sp"
android:layout_height="wrap_content"
android:text="@string/btn_text1"
/>
<Button
android:id="@+id/delBtn"
android:layout_width="160sp"
android:layout_height="wrap_content"
android:text="@string/btn_text2"
/>
</LinearLayout>
<Spinner
android:id="@+id/mySpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第四步:修改res/layout/spinner_dropdown.xml,其代码如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="25sp"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
/>
扩展学习
setDropDownViewResource 主要是设置User 点击Spinner 后出现的下拉菜单样式,除了前一个范例使用自设方式改变TextView 内容之外,android 亦提供两种基本的样式:
android.R.layout.simple_spinner_item:TextView 的下拉菜单。
android.R.layout.simple_spinner_dropdown_item:除了有TextView,右边有radio 的下拉菜单。
查看 Android 源代码中的simple_spinner_drop, , down_item.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
/>
以下为自定义修改后,适用于spinner 的Layout:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="12sp"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
android:textSize="10sp"
/>
例子效果图:
第一步:建立Android 工程:SpinnerDemo。
第二步:编写Activity 的子类别:SpinnerDemo,其程序代码如下:
package com.a3gs.spinner;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class SpinnerDemo extends Activity {
private TextView myTV;
private Spinner mySp;
private EditText myET;
private Button addBtn, delBtn;
private final String[] items = {"北京市", "上海市", "天津市", "福州市"} ;
private ArrayAdapter<String> adapter;
private List<String> allItems;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTV = (TextView) findViewById(R.id.myTV);
myET = (EditText) findViewById(R.id.myET);
addBtn = (Button) findViewById(R.id.addBtn);
delBtn = (Button) findViewById(R.id.delBtn);
mySp = (Spinner) findViewById(R.id.mySpinner);
mySp.setVisibility(View.VISIBLE);
allItems = new ArrayList<String>();
for(int i=0; i < items.length; i++){
allItems.add(items[i]);
}
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, allItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySp.setAdapter(adapter);
mySp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
myTV.setText("您选择的是:" + mySp.getSelectedItem().toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
addBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String ETText = myET.getText().toString();
int len = adapter.getCount();
// 检查所添加的是否已经存在
for(int i = 0; i < len; i++){
if(ETText.equals(adapter.getItem(i))){
return;
}
}
if(!ETText.equals("")){
adapter.add(ETText);
int position = adapter.getPosition(ETText);
mySp.setSelection(position);
myET.setText("");
}
}
});
delBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mySp.getSelectedItem() != null) {
adapter.remove(mySp.getSelectedItem().toString());
myET.setText("");
}
if(adapter.getCount() == 0){
myET.setText("");
}
}
});
}
}
第三步:修改res/layout/main.xml,其代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/myTV"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText
android:id="@+id/myET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/addBtn"
android:layout_width="160sp"
android:layout_height="wrap_content"
android:text="@string/btn_text1"
/>
<Button
android:id="@+id/delBtn"
android:layout_width="160sp"
android:layout_height="wrap_content"
android:text="@string/btn_text2"
/>
</LinearLayout>
<Spinner
android:id="@+id/mySpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第四步:修改res/layout/spinner_dropdown.xml,其代码如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="25sp"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
/>
扩展学习
setDropDownViewResource 主要是设置User 点击Spinner 后出现的下拉菜单样式,除了前一个范例使用自设方式改变TextView 内容之外,android 亦提供两种基本的样式:
android.R.layout.simple_spinner_item:TextView 的下拉菜单。
android.R.layout.simple_spinner_dropdown_item:除了有TextView,右边有radio 的下拉菜单。
查看 Android 源代码中的simple_spinner_drop, , down_item.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
/>
以下为自定义修改后,适用于spinner 的Layout:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="12sp"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
android:textSize="10sp"
/>
例子效果图:
相关文章推荐
- Android中动态添加╱删除的Spinner菜单 — ArrayList与Widget的依赖性
- 动态添加/删除Spinner菜单
- Android UI设计 下拉菜单Spinner用法 动态添加删除Spinner菜单项
- 安卓入门:动态添加╱删除的Spinner 菜单
- 动态添加/删除Spinner 菜单
- 动态添加删除Spinner菜单项
- 动态添加菜单\删除菜单\插入菜单
- (转)Android中动态添加view,删除view,获取view的内容
- android通过代码动态添加和删除控件
- android动态添加删除布局,并且带有动画效果,点击可以展开布局
- Android中ListView动态添加删除项
- android ListView内数据的动态添加与删除
- Android实战简易教程-第十一枪(树形组件:ExpandableListView显示和动态添加删除)
- Android中使用TagFlowLayout制作动态添加删除标签
- QT中菜单Menu与工具栏Toolbar中各个Action的动态添加删除
- Android – ListView 中添加按钮,动态删除添加ItemView的操作
- android ListView内数据的动态添加与删除实例代码
- Android---动态添加删除的ListView与TableLayout
- 动态添加删除 Spinner内容
- android ListView内数据的动态添加与删除