Android之单复选框及Spinner实现二级联动
一、基础学习
1.图形学真的很神奇啊。。。。查了些资料做出了3D云标签,哈哈。。。其实直接拿来用的,我们要效仿鲁迅先生的拿来主义,嘿嘿~~3D标签云就是做一个球面,然后再球面上取均匀分布的点,把点坐标赋给标签,再根据抽象出来的Z轴大小来改变标签的字体大小,透明度,做出立体感觉,然后球体就做好了。用到的就是简单的球面方程:已知半径r和球心,一般为了方便,我们都以坐标轴原点为球心,有下面三个方程x=r*sinθ*cosΦ y=r*sinθ*sinΦ z=r*cosθ;也就是说,我们可以对θ和Φ取随机数,来获得圆上的随机点坐标。但仅此还不够,因为如果要做3D标签云,一个很重要点的就是平均分布。如果单纯的取随机坐标,会导致一些标签重叠,相对来说就没那么美观了.怎么解决呢,自己搞吧,我也不懂。这是引用大牛的话,真的很犀利。
2.最近看到MVP们都在搞高并发测试。
3.openSSL闹得凶啊。
4.spinner:微调;county:城镇,县
二、代码实例
博客园自带的CnblogsCode老出问题,代码显示不完整,究竟咋回事
1.单选框RadioGroup
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/encinfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:text="请选择要使用的文字编码:" />
<RadioGroup
android:id="@+id/encoding"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:checkedButton="@+id/gbk">
<RadioButton
android:id="@+id/utf"
android:text="UTF编码" />
<RadioButton
android:id="@+id/gbk"
android:text="GBK编码" />
</RadioGroup>
<TextView
android:id="@+id/sexinfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:text="您的性别是:" />
<RadioGroup
android:id="@+id/sex"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:checkedButton="@+id/male">
<RadioButton
android:id="@+id/male"
android:text="男" />
<RadioButton
android:id="@+id/female"
android:text="女" />
</RadioGroup>
</LinearLayout>
2.复选框CheckBox
MainActivitypackage org.lxh.demo; import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox; public class MyCheckBoxDemo extends Activity {
private CheckBox box = null; // 定义组件 @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.box = (CheckBox) super.findViewById(R.id.url3); // 取得组件
this.box.setChecked(true); // 将此组件设置为默认选中
this.box.setText("www.jiangker.com"); // 设置显示文字
}
}
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/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="您经常浏览的网站是:" />
<CheckBox
android:id="@+id/url1"
android:text="www.mldn.cn"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/url2"
android:text="bbs.mldn.cn"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/url3"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

3.固定下拉
Activitypackage org.lxh.demo; import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner; public class MySpinnerDemo extends Activity {
private Spinner spiColor = null; // 表示要读取的颜色列表框
private ArrayAdapter<CharSequence> adapterColor = null; // 所有的数据都是String @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.spiColor = (Spinner) super.findViewById(R.id.mycolor); // 取得颜色的下拉框
this.spiColor.setPrompt("请选择您喜欢的颜色:");
//下面这两句不太懂
this.adapterColor = ArrayAdapter.createFromResource(this,
R.array.color_labels, android.R.layout.simple_spinner_item); // 实例化了ArrayAdapter
this.adapterColor
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 换个风格
this.spiColor.setAdapter(this.adapterColor); // 设置显示信息
}
}
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/info_city"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择您喜欢的城市:" />
<Spinner
android:id="@+id/mycity"
android:prompt="@string/city_prompt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/city_labels"/>
<TextView
android:id="@+id/info_color"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择您喜欢的颜色:" />
<Spinner
android:id="@+id/mycolor"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/info_edu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择您的学历:" />
<Spinner
android:id="@+id/myedu"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
city<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="color_labels">
<item>红色</item>
<item>绿色</item>
<item>蓝色</item>
</string-array>
</resources>
color<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="color_labels">
<item>红色</item>
<item>绿色</item>
<item>蓝色</item>
</string-array>
</resources>
string<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MySpinnerDemo!</string>
<string name="app_name">下拉列表</string>
<string name="city_prompt">请选择您喜欢的城市:</string>
</resources>

4.动态生成下拉内容
结构和上面一样,不过Edu都是动态生成的,就是从list里获取。
Activitypackage org.lxh.demo; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner; public class MySpinnerDemo extends Activity {
private Spinner spiColor = null; // 表示要读取的颜色列表框
private Spinner spiEdu = null; // 定义下拉列表
private ArrayAdapter<CharSequence> adapterColor = null; // 所有的数据都是String
private ArrayAdapter<CharSequence> adapterEdu = null; // 所有的数据肯定是字符串
private List<CharSequence> dataEdu = null; // 定义一个集合数据
/*
* 既然list里是Sting,为什么不用呢,所以我想CharSequence和Sting什么区别呢?
* 查看javaAPI得知,CharSequence是接口,String是其实现类。
* CharSequence 是 char 值的一个可读序列,是接口,String本质上是通过字符数实现的。
* 那么换成String行吗,不行
* 第31行提示转换错误
*/ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.spiColor = (Spinner) super.findViewById(R.id.mycolor); // 取得颜色的下拉框
this.spiColor.setPrompt("请选择您喜欢的颜色:");
this.adapterColor = ArrayAdapter.createFromResource(this,
R.array.color_labels, android.R.layout.simple_spinner_item); // 实例化了ArrayAdapter
this.adapterColor
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 换个风格
this.spiColor.setAdapter(this.adapterColor); // 设置显示信息 // 配置List集合包装的下拉框内容
this.dataEdu = new ArrayList<CharSequence>();
this.dataEdu.add("大学");
this.dataEdu.add("研究生");
this.dataEdu.add("高中"); this.spiEdu = (Spinner) super.findViewById(R.id.myedu); // 取得下拉框
this.spiEdu.setPrompt("请选择您喜欢的学历:");
//只是下面这个方法不同而已
this.adapterEdu = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, this.dataEdu); // 准备好下拉列表框的内容
this.adapterEdu
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 换个风格
this.spiEdu.setAdapter(this.adapterEdu); }
}
5.Spinner二级联动
点击第一级都要触发事件,关键还是怎么添加资源文件。
Activitypackage org.lxh.demo; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView; public class MainActivity extends Activity {
private TextView textView ;
private Spinner province;
private Spinner city;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); textView = (TextView)this.findViewById(R.id.textView);
province = (Spinner)this.findViewById(R.id.province);
city = (Spinner)this.findViewById(R.id.city); //(处理省的显示)
//将可选内容与ArrayAdapter的连接(从资源数组文件中获取数据)
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(this, R.array.province, android.R.layout.simple_spinner_item);
//设置下拉列表的风格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将数据绑定到Spinner视图上
province.setAdapter(adapter);
//第二个默认被选中
province.setSelection(1, true); //添加条目被选中监听器
province.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
//parent既是province对象
Spinner spinner = (Spinner)parent;
String pro = (String)spinner.getItemAtPosition(position); //(处理省的市的显示)
//将默认值与ArrayAdapter连接(从资源数组文件中获取数据)
//下面的R.array.province随意都行
ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource
(MainActivity.this, R.array.province, android.R.layout.simple_spinner_item);
//new ArrayAdapter<CharSequence>
// (MainActivity.this,android.R.layout.simple_spinner_item, cities);
//获取所在省含有哪些市(从资源数组文件中获取数据)
if(pro.equals("河北省")){ cityAdapter = ArrayAdapter.createFromResource
(MainActivity.this, R.array.hb, android.R.layout.simple_spinner_item);
}else if(pro.equals("北京市")){ cityAdapter = ArrayAdapter.createFromResource
(MainActivity.this, R.array.bj, android.R.layout.simple_spinner_item);
}else if(pro.equals("山西省")){ cityAdapter = ArrayAdapter.createFromResource
(MainActivity.this, R.array.shx, android.R.layout.simple_spinner_item);
}
//绑定数据到Spinner(City)上
city.setAdapter(cityAdapter);
} public void onNothingSelected(AdapterView<?> parent) { } });
}
}
main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Spinner
android:id="@+id/province"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <Spinner
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/province" />
</RelativeLayout> </LinearLayout>
main.xml<?xml version="1.0" encoding="utf-8"?>
<resources> <string-array name="province">
<item>-省份-</item>
<item>河北省</item>
<item>山西省</item>
<item>北京市</item>
</string-array>
<string-array name="hb">
<item>-城市-</item>
<item>承德市</item>
<item>邯郸市</item>
<item>廊坊市</item>
</string-array>
<string-array name="bj">
<item>-城市-</item>
<item>海淀区</item>
<item>朝阳区</item>
<item>崇文区</item>
</string-array>
<string-array name="shx">
<item>-城市-</item>
<item>大同市</item>
<item>临汾市</item>
</string-array> </resources>
要获取下拉框spinner中选中的值,用下面这方法就OK了.
province.getSelectedItem().toString(); city.getSelectedItem().toString();
三、后记
查资料的过程中发现很多原创博文被挂在不知名的网站上,估计是自动抓取过来的,笔者在此除了表示气愤以外也没有别的办法,我就想抓取和Android的消息推送有没有关系,还有就是如何防止博文被盗链,希望路过的看官给留点资料。
关于博客园自带代码插件CnblogsCode在writer里代码显示不完整问题我已反应,dudu说确实有问题,需要时间来解决。
Android之单复选框及Spinner实现二级联动的更多相关文章
- Android布局——单复选框(今天上课的内容总结下)
怎么感觉最近补充的都是监听器的内容,今天学长提了一个新的监听器,看起来很牛批(因为很长) // 添加文本更改的监听器, TextWatcher是监听器的回调接口 text.addTextChanged ...
- 表单复选框input[type="checkbox"]
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- javascript入门 之 ztree (九 单/复选框问题)
<!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...
- 8个非常个性化的CSS3单/复选框
单选框和复选框在网页表单中应用十分广泛,但是浏览器默认自带的单选框和复选框样式不仅不统一,而且大多都比较简单丑陋.本文给大家介绍了一些基于CSS3的个性化单选框和复选框,一些选中动画是基于jQuery ...
- AngularJS(六):表单-复选框
本文也同步发表在我的公众号“我的天空” 复选框 复选框只有两个值:true或者false,因此在AngularJS中,一般都是将复选框的ng-model绑定为一个布尔值属性,通过这两个布尔值来决定其勾 ...
- python selenium单/复选框操作
一.单选:radio 1.首先是定位选择框的位置 2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就 ...
- 原创:纯CSS美化单复选框(checkbox、radio)
最重要的一点,隐藏选择框本身.不多说了,上代码: <!doctype html> <html> <head> <meta charset="utf- ...
- 关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值
最近做项目用到了treeview.因为涉及到多选的问题,很是棘手,于是乎,我决定查看原生JS,探个究竟.需要引用官方的bootstrap-treeview.js都知道吧,对于所需要引用的,我就不多说了 ...
- SpringMVC 表单复选框处理
<form action="" method="post"> <c:forEach items="${dblist}" v ...
随机推荐
- spinner中的onNothingSelected方法到底什么时候调用?
这个东东大家在开发中可能不太能用到,所以总是容易被忽略,由于工作原因,我最近琢磨了一下onNothingSelected方法的调用时机问题,其实很简单,只要我们稍微看一下源码就明白了: /** * C ...
- Android(java)学习笔记155:如何让你的GridView不再滚动
GridView显示不完整的原因是因为,他的外层也套用了一个滑动的控件,这个解决办法是:重写GridView,是控制GridView不能滚动,就是写一个类继承GridView 代码如下: publ ...
- Magento 使用心得
Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...
- C# ado.net 使用 row_number over() 简单的分页示例
/// <summary> /// 获取Paging列表 /// </summary> public List<HousesAgentEntity> GetPage ...
- 20151216JqueryUI---dialog代码备份
$(function () { $('#search_button').button(); /*$('#reg').dialog({ focus:function(e,ui){ alert('注册') ...
- O-C相关06:self和super关键字介绍——self关键字
self关键字介绍 1.self和super OC 版权声明:本文为博主原创文章,未经博主允许不得转载. posted @ 2015-08-04 12:46 王刚韧(wanghy_iOS) 阅读(.. ...
- Struts2的运行原理和运行与原理
Struts2 struts2的流程图 运行机制 1.客户端发送请求.通过ActionContextLoader调用FilterDispatcher(struts) 2.FilterDispatche ...
- JPA的泛型DAO设计及使用
使用如Hibernate或者JPA作为持久化的解决方案时,设计一个泛型的DAO抽象父类可以方便各个实体的通用CRUD操作.由于此时大部分实体DAO的CRUD操作基本一样,采用泛型设计解决这个问题,带来 ...
- Android SDK镜像
北京化工大学镜像站 http://ubuntu.buct.edu.cn/ 大连东软信息学院 http://mirrors.neusoft.edu.cn/ 中科院开源软件协会 http://mirror ...
- Linux Shell脚本之自动修改IP
作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...