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说确实有问题,需要时间来解决。

时间: 2024-10-29 05:04:38

Android之单复选框及Spinner实现二级联动的相关文章

总结:表单复选框向PHP传输数据的研究

表单复选框就是checkbox 1.checkbox的应用    <input type="checkbox" name="ch" value="2"> 2.由于我传输的是在php循环中产生的数组,因此value也要设成变量:    <?php       for($i=0;$i<10;$i++){   ?>    <input type="checkbox" name="ch[]

表单复选框向PHP传输数据的代码_php技巧

表单复选框就是checkbox 1.checkbox的应用  复制代码 代码如下:    <input type="checkbox" name="ch" value="2">  2.由于我传输的是在php循环中产生的数组,因此value也要设成变量:     <?php         for($i=0;$i<10;$i++){     ?>      <input type="checkbox&q

PHP判断表单复选框选中状态完整例子_php实例

网页表单中经常用到复选框,那么如何用PHP来判断提交的表单中哪些复选框被选中,并读取其中的数据呢. 首先建立一个表单:form.html 复制代码 代码如下: <form action=checkbox.php method=post> <input name="s[]" type="checkbox" value="3" />3<br> <input name="s[]" type=

Android中CheckBox复选框控件使用方法详解

CheckBox复选框控件使用方法,具体内容如下 一.简介 1. 2.类结构图 二.CheckBox复选框控件使用方法 这里是使用java代码在LinearLayout里面添加控件 1.新建LinearLayout布局 2.建立CheckBox的XML的Layout文件 3.通过View.inflate()方法创建CheckBox CheckBox checkBox=(CheckBox) View.inflate(this, R.layout.checkbox, null); 4.通过Linea

Javscript实现表单复选框的全选功能

复选框 有很多人不知道在多选框中全选怎么还编写代码.其实很简单,下面就是代码以及说明,请仔细阅读. <script language="javascript"> //代码说明(lulu163.com):form1为表单名,memberId为复选框,selectbutton为全选按钮    function selectAll()     { for (var i=0;i<document.form1.memberId.length;i++) { var temp=do

android checkbox复选框不显示

问题描述 android checkbox复选框不显示 做了一个显示文件列表的app 列表每一项右边的checkbox复选框在安卓5.0系统中显示出来了 把app装到4.0+的系统中就不显示了 一直都找不到原因 麻烦各位大神解救 在4.0+的系统中右边的复选框不显示 但点击了代码提示还是又选中了 它还是在那个位置 但就是显示不出来 解决方案 Android中CheckBox复选框操作android 中 CheckBox 复选框操作Android复选框(CheckBox)的现实

Android复选框对话框用法实例简析_Android

本文实例分析了Android复选框对话框用法.分享给大家供大家参考,具体如下: /** * 创建筛选复选框对话框 * @param guoguanglist 联赛名 * @param flags 是否选择 * @create_time 2011-10-26 下午3:59:54 */ private void initFilterDialog(String[] iNamelist, final boolean[] iFlags) { Builder builder = new android.ap

Android之复选框对话框用法实例分析_Android

本文实例讲述了Android之复选框对话框用法.分享给大家供大家参考.具体如下: main.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:l

【Android开发】基本组件-复选框

复选框: 默认情况下,单选框按钮显示为一个方块图标,并且在该图标旁边放置一些说明性文字.与单选按钮不同的是,复选框可以进行多选设置,每一个复选框都提供"选中"和"不选中"两种状态. 在Android中,复选框使用CheckBox表示,CheckBox又是Button的子类,所以单选按钮可以直接使用Button支持的各种属性. Android中,可以使用两种方法向屏幕中添加单选按钮,一种是通过在XML布局文件中使用<CheckBox>标记添加:另一种是在J