1. 程式人生 > >安卓對話方塊之----建立帶多選項列表的對話方塊

安卓對話方塊之----建立帶多選項列表的對話方塊

1、我們在佈局檔案中用一個按鈕進行測試,給按鈕註冊事件,下面是佈局檔案的程式碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="18dp"
        android:text="@string/text_java" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/checkBox1"
        android:layout_marginTop="36dp"
        android:text="@string/text_3G" />

    <CheckBox
        android:id="@+id/checkBox3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/checkBox2"
        android:layout_below="@+id/checkBox2"
        android:layout_marginTop="43dp"
        android:text="@string/text_net" />

    <CheckBox
        android:id="@+id/checkBox4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/checkBox3"
        android:layout_below="@+id/checkBox3"
        android:layout_marginTop="44dp"
        android:text="@string/text_PHP" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/checkBox2"
        android:layout_below="@+id/checkBox4"
        android:layout_marginTop="58dp"
        android:onClick="getValues"
        android:text="@string/text_get" />

</RelativeLayout>


2、這是佈局檔案中引用的string.xml的值:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">lession16-checkbox</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="text_java">Java專業</string>
    <string name="text_net">NET專業</string>
    <string name="text_PHP">PHP專業</string>
    <string name="text_3G">3G專業</string>
    <string name="text_get">獲取值</string>
   

</resources>


3、MainActivity中的程式碼:

package com.example.lession16_checkbox;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	//宣告元件
	private CheckBox cb1,cb2,cb3,cb4;
	
	//宣告一個集合
	private List<CheckBox> checkBoxs=new ArrayList<CheckBox>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//獲取元件
		cb1 = (CheckBox) findViewById(R.id.checkBox1);
		cb2 = (CheckBox) findViewById(R.id.checkBox2);
		cb3 = (CheckBox) findViewById(R.id.checkBox3);
		cb4 = (CheckBox) findViewById(R.id.checkBox4);
		
		//預設選項
		cb2.setChecked(true);
		cb4.setChecked(true);
		
		//註冊事件
		cb1.setOnCheckedChangeListener(listener);
		cb2.setOnCheckedChangeListener(listener);
		cb3.setOnCheckedChangeListener(listener);
		cb4.setOnCheckedChangeListener(listener);
		//把四個元件新增到集合中去
		checkBoxs.add(cb1);
		checkBoxs.add(cb2);
		checkBoxs.add(cb3);
		checkBoxs.add(cb4);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	public void getValues(View v) {

		String content = "";

		for (CheckBox cbx : checkBoxs) {
			if (cbx.isChecked()) {
				content += cbx.getText() + "\n";
			}
		}

		if ("".equals(content)) {
			content = "您還沒有選擇尼";
		}
		new AlertDialog.Builder(this).setMessage(content).setTitle("選中的內容如下")
				.setPositiveButton("關閉", null).show();

	}

	CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {

		@Override
		public void onCheckedChanged(CompoundButton buttonView,
				boolean isChecked) {
			// TODO Auto-generated method stub
			CheckBox box = (CheckBox) buttonView;

			Toast.makeText(getApplicationContext(),
					"獲取的值:" + isChecked + "xxxxx" + box.getText(),
					Toast.LENGTH_LONG).show();

		}
	};

}

相關推薦

對話方塊----建立選項列表對話方塊

1、我們在佈局檔案中用一個按鈕進行測試,給按鈕註冊事件,下面是佈局檔案的程式碼: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h

專案實戰強大的網路請求框架okGo使用詳解(六):擴充套件專案okServer,更強大的下載上傳功能,支援斷點和工管理

OkGo與OkDownload的區別就是,OkGo只是簡單的做一個下載功能,不具備斷點下載,暫停等操作,但是這在很多時候已經能滿足需要了。 而有些app需要有一個下載列表的功能,就像迅雷下載一樣,每個下載任務可以暫停,可以繼續,可以重新下載,可以有下載優先順序,這時候OkDownload就有

學習筆記(10)-自定義彈出式對話方塊

​ 之前學習彈出式對話方塊的時候,我們可以在AlertDialog中放置我們自己設計的佈局內容,如TextView,EditView,多選框,單選框等等,但是按鈕使用的都是其自帶的PositiveButton和NegativeButton,最多可使用三個按鈕

開發學習014 Button應用詳解(樣式、背景、按鈕單擊、長按、雙擊、擊事件)

一、Button簡介 按鈕也是繼承自TextView 二、XML定義方法 <Button android:id="@+id/button01" android:layout_width="w

初學開發隨筆 Menu、toast 用法、活動的四種啟動模式 以及 一個方便的Base活動類使用方法

pro 一點 cte edi standard oid nal xtend 解釋 Toast toast 是安卓系統的一種非常棒的提醒方式 首先定義一個彈出Toast的觸發點,比如可以是按鈕之類 其中 Toast.LENGTH_SHORT是指顯示時長 還有一個內置變量為To

UI系列ProgressBar

div tro pro jin git round you tex .html 系統默認樣式進度條 /** * Android 七種進度條的樣式 * http://www.jb51.net/article/71269.htm 七種樣式 * http://www.

編程自定義字體控件導致應用閃退

有效 face ets type ima 效果 運行時 界面跳轉 手機   這坑踩的是結結實實,近來做項目,需要用到自定義字體,一個項目中近十種字體,果斷選擇了使用自定義控件來實現。   可是,大功告成之後,在性能較差的手機上去運行時,反復切換頁面,應用閃退了,log沒有有

開發 頂部工具欄 返回功能 仿手機QQ頂部工具條

開發環境搭建   http://blog.csdn.net/juyangjia/article/details/9471561HelloWorld http://blog.csdn.net/juyangjia/article/details/9491781歡迎動畫製作&

四大元件Activity學習

在安卓中各大控制元件都要依附Activity來完成與使用者的互動,Activity(活動)作為控制元件的平臺。介面的實現都要用到Activity,簡單的說Activity就是安卓的UI部分。 Activity的生命週期 一個Activity的建立與銷燬要經歷一下幾個方法: onCreat

學習筆記-網路世界的探究

安卓學習筆記之-網路世界的探究 WebView的用法 1…webView:功能就是在自己的應用程式上嵌入一個瀏覽器,不用啟動瀏覽器的控制元件。 2…webView.getSettings()方法可以去設定瀏覽器的屬性。如 setJavaScripEnable()方法來實現webVie

10月28號,2018全套一對一視訊聊天app++IOS可二開後臺!

移動網際網路時代正在改變的不是我們這群年輕人,它也正在改變著我們的大爺和大媽,在你國慶回家的時候,有沒有發現你大爺、大媽都已經不是當年的大爺大媽了!移動網際網路正在改變著整個中國,包括曾經的“大爺、大媽”。從BAT(百度、阿里巴巴、騰訊)到TMD(今日頭條、美團、滴滴)再到今天在三線及以下城

專案實戰關於獲取SD卡指定路徑和檔案的講解

前言 當我們將手機連線到電腦上時,我們發現在SD卡的根目錄下生成了成百上千的由各種應用程式建立的資料夾,導致我們也不知道哪個資料夾是用來幹嘛的,這正因為這樣安卓開發人員經常受到使用者的吐槽。 的確作為一個安卓開發者,我們的確不應該將我們應用的資料直接存到SD卡的根目錄下,這樣當手機安

明日之後版即將公測 你全面瞭解

明日之後什麼時候公測?明日之後怎麼樣?明日之後到底怎麼玩?明日之後到底肝不肝,氪不氪?明日之後能用電腦玩嗎?   明日之後是網易又一力作,前期造勢十足,吸引了萬千眼球,吊足了八方胃口,現終於公佈安卓版將於11月6日公測,雖然內測階段出了不少岔子,被丟了不少臭雞蛋爛白菜,但目前

專案實戰Activity啟動過程中動態獲取元件寬高的3種方式

前言 有時候我們需要在Activity啟動的時候獲取某一元件的寬或者是高用於動態的更改UI佈局,但是這時候我們直接通過getWidth和getHeight方法獲取是有問題的,如下: 我們在Activity的onCreate方法中呼叫如下的方法來獲取元件的寬高: /** * 在onC

專案實戰設定Activity跳轉動畫的5種實現方式

前言 在介紹activity的切換動畫之前我們先來說明一下實現切換activity的兩種方式: 1,呼叫startActivity方法啟動一個新的Activity並跳轉其頁面 2,呼叫finish方法銷燬當前的Activity返回上一個Activity介面 當呼叫startActiv

專案實戰如何debug執行具有release簽名的apk

需求分析 眾所周知,Android的安裝包有測試包(debug版本)和正式包(release版本)之分,一般我們測試時安裝的debug版本預設採用的簽名都是系統幫我們提供的debug.keystore簽名檔案,該檔案位於C:\Users\Administrator.android目錄

專案實戰強大的網路請求框架okGo使用詳解(五):擴充套件專案okRx,完美結合RxJava

前言 在第一篇講解okGo框架新增依賴支援時,還記得我們額外新增的兩個依賴嗎,一個okRx和一個okServer,這兩個均是基於okGo框架的擴充套件專案,其中okRx可以使請求結合RxJava一起使用,而okServer則提供了強大的下載上傳功能,如斷點支援,多工管理等,本篇我們主要講

專案實戰強大的網路請求框架okGo使用詳解(四):Cookie的管理

Cookie概念相關 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於採用伺服器端保持狀態的方案在客戶端也需要儲存一個標識,所以session機制是需要藉助於cookie機制來達到儲存標識的目的,所謂ses

專案實戰強大的網路請求框架okGo使用詳解(三):快取的使用

相關實體類必須實現序列化介面 使用快取前,必須讓涉及到快取javaBean物件實現Serializable介面,否者會報NotSerializableException。因為快取的原理是將物件序列化後直接寫入資料庫中,如果不實現Serializable介面,會導致物件無法序列化,進而無法

專案實戰強大的網路請求框架okGo使用詳解(二):深入理解Callback自定義JsonCallback

前言 JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快了傳輸速度,目前客戶端伺服器返回的資料大多都是基於這種格式的,相應的我們瞭解的關於json的解析工具主要有兩個:Gson(Google官方出的)和fas