發表文章

[Android] 設計以格狀為主的排版時,使用 GridView 或是 TableLayout 較好呢?

GridView 的功能類似 ListView,其所顯示的資料來自與其關連的 ListAdapter 物件,難以單純的用xml排版檔案就指定所繪元件的細節。TableLayout 則可以顯示任何所指定的 View,並可在xml排版檔案中就直接指定要繪製的元件內容。 因此,當每個格子中要繪製的東西較簡單(例如只是根據資料繪製出特定ImageView與TextView),並且這些東西邏輯上可視為同一群組來編輯時,可選擇GridView。若所繪的內容較複雜,或者功能要求是以"排版"為主時,可選擇TableLayout。 簡言之,放的東西簡單,沒有排版需求,用GridView;例如日曆畫面。放的東西複雜,或有排版需求時,使用TableLayout;例如一般非單欄選單的製作。

[Android] 想在fullscreen上畫出按鈕,應該使用ImageButton還是ImageView呢?

應該使用ImageButton,因為ImageButton不是Button的子類別而是ImageView的,因此所有可在ImageView上用到的好處在ImageButton上都可以使用得到。

[Database] Derby使用筆記

Starts up the Derby engine Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); Creates and connects to a database Connection conn = DriverManager.getConnection("jdbc:derby:" + dbName + ";create=true"); // 若要自行手動控制transaction, 要將JDBC中預設的autocommit功能關掉. conn.setAutoCommit(false); Creates a table // 可針對該資料庫重複使用的Statement物件 Statement stmt = conn.createStatement(); // 建立名為location的資料表 stmt.execute("CREATE TABLE location(num int, addr varchar(40))"); Inserts data // 當重覆執行SQL敘述時, 建議使用PreparedSstatement(可以不需要每次都recompileSQL敘述) PreparedStatement pStmt = conn.prepareStatement("INSERT INTO location VALUES(?, ?)"); pStmt.setInt(1, 1956); pStmt.setString(2, "Min-Sheng East Road"); pStmt.executeUpdate(); Updates data PreparedStatement psUpdate = conn.prepareStatement("UPDATE location SET num=?, addr=? where num=?"); psUpdate.setInt(1, 300); psUpdate.setString(2, "Cheng-Guong ...

[Java] 何時該使用LinkedList? (與ArrayList的效率比較)

根據網路上的 這篇測試 顯示出了以下結果: 多次建立並刪除第一個元素: ArrayList 花費 4346 毫秒 LinkedList 花費 0 毫秒 多次建立並刪除串列中的中間元素: ArrayList 花費 2104 毫秒 LinkedList 花費 26728 毫秒 多次建立並刪除串列的最後一個元素: ArrayList 花費 731 毫秒 LinkedList 花費 1242 毫秒 因此大概可以得出一個結論:在Java語言中,不管你想實作怎樣的資料結構, 為了效率的考量,不要使用LinkedList 。

[Java] HashTable和HashMap的不同

HashTable和HashMap的不同主要有四種 一、 HashTable 是繼承java.util.Dictionary HashMap 是繼承java.util.AbstractMap Dictionary 是舊的class, 【DOC】NOTE: This class is obsolete. New implementations should implement the Map interface, rather than extending this class. java.util.AbstractMap 已經implements Map Interface,因此繼承它的class 只需要實作它的method就可以實作出需要的Map (例如get,put,entrySet method) 可參:http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractMap.html java.util.Dictionary 並沒有去Implements Map Interface,HashTable是另外去實作Map interface,也因此HashTable能被算在Java Util Framework中。 ...

PHP:常數

PHP 中的常數必須要在類別內容之外,使用 define() 函式或 const 關鍵字來定義,而且一但定義完成,就不可再更改其值。如下: <?php define("CONSTANT_1", "Hello world."); const CONSTANT_2 = 'Hello World'; echo CONSTANT_1; // outputs "Hello world." echo Constant_1; // outputs "Constant" and issues a notice. echo CONSTANT_2; // outputs "Hello world." ?> 與其他變數不同,在使用常數時,前面並不需要加上 $ 符號。 constant("name"):回傳一個名稱叫做 name 的常數的值。 get_defined_constants(boolean):回傳一個包含目前所有已定義的常數的陣列,包含系統定義以及使用者自訂的。可以透過設定 true 或 false 來決定回傳的陣列要不要進一步將常數分門別類。

PHP:變數範圍

PHP 中的變數有著單一的存取範圍,也就是它定義時所在的範圍;如果在函數外定義,則為全域變數 (global variables),整個 PHP 頁面的地方都可以使用到此變數,包含被 required 及 included 的檔案中也行;但若是定義在函式中的,則稱本地變數 (local variables),在該函式之外的地方即無法使用。 但與 C-like 語言不同的地方是,若你在函數外定義了某個變數,在函數內沒有先定義而直接使用了一個同樣名稱的變數時,PHP 會將 函數內的那個視為新定義的變數 ,而不是沿用那個同名的全域變數;除非你以 global 關鍵字或 $GLOBALS 陣列來指定你的確要在函數中使用全域變數: <?php $a = 1; $b = 2; function test(){   // 指向一個新定義的本地變數,因尚未指定初值,所以不會印出東西   echo $a; } function Sum1(){   //使用 global 關鍵字說明這兩個變數是指向全域變數的   global $a, $b;   $b = $a + $b; } function Sum2(){   //使用 $GLOBALS 陣列指定全域變數   $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } ?> PHP 中的靜態 (static) 變數只能在函式中使用;靜態變數的值在程式離開函式後還會繼續保留,而且如果試圖以運算式的結果來初始化靜態變數時會產生錯誤。 <?php function foo(){   static $int = 0; // correct   static $int = 1+2; // wrong (as it is an expression)   static $int = sqrt(121); // wrong (as it is an expression too)   //$int 的值在每次 foo() 被呼叫時都會加 1   $int++;   echo $int; } ?>