做了個時間輸入的自定義控制元件:

點擊控制元件右邊的按鈕,會彈出選擇器供用戶選擇而得到分秒時間:

然后用在我的UI上:

現在的問題是: 當用戶每次選擇時間后,我需要把短跑和長跑時間求和,如果超過5分鐘,就顯示不合格,否則就顯示合格。
設想思路: 如果在界面上加上一個按鈕,通過點擊事件來判斷,肯定是沒問題的。但這樣做,顯然是很笨的。
看得出來,這個邏輯是沒有辦法做在自定義控制元件里的,那么我怎樣才能做到在用戶選擇了時間之后就能實作這個邏輯呢?
uj5u.com熱心網友回復:
我考慮過在自定義控制元件中增加一個介面,介面中增加一個抽象方法,讓外部去實作。但我是新手,還沒寫過介面呢,不知道這樣行不行?uj5u.com熱心網友回復:
選擇時間的回呼,然后呼叫計算方法,把“界面上加上一個按鈕,通過點擊事件來判斷”這個判斷方法在點擊選擇時間后的確定按鈕呼叫uj5u.com熱心網友回復:
就像 TextView 有setText 方法,可以直接呼叫, 你這個自定義VIEW 添加個方法,呼叫就行了,不一定要介面uj5u.com熱心網友回復:
1. 假定你的控制元件為 TimeChoice2. 設定你的控制元件內部 定義介面 OnTimeChoiceListener, 包含方法 onChoice(TimeChoice instance, String time)
3. 你的 外部 Fragment/Activity 實作 OnTimeChoiceListener
4. 你的 TimeChoice 控制元件內部 包含 OnTimeChoiceListener mListener;
5. 當你的 TimeChoice 完成輸入(這個你需要知道什么時候完成)
6. 內部方法呼叫 mListener.onChoice(this, "xxxxTimeContent");
7, 外部Activity/Fragment 根據回呼方法,并且通過 instance 引數,就可以知道是哪一個時間,然后處理你的業務邏輯
8. 完成,你太難了~,安卓程式員太難了~
uj5u.com熱心網友回復:
時間選擇器的ok鍵的點擊事件呼叫時間計算方法,每次選擇完時間后都計算一次,然后setText到文本框uj5u.com熱心網友回復:
大致看一下,應該是跨類呼叫, 一般都是用 委托處理 這種,不專業點還有 廣播/eventbus ,方法很多。。 。uj5u.com熱心網友回復:
最后采用的方法跟你的差不多,用介面的方式實作了,只是有個麻煩:只要在某個新的頁面上放一個這樣的控制元件,就必須實作介面的方法,不管這個方法里面有沒有內容!
uj5u.com熱心網友回復:
在C#中,我都是用委托完成這種功能的,覺得委托也很好用
uj5u.com熱心網友回復:
自定義控制元件怎么知道外面的邏輯呢,沒辦法知道的!
uj5u.com熱心網友回復:
暴露自定義控制元件的介面,在外部實作這個介面,每次點擊自定義控制元件的按鈕,就呼叫外部的方法uj5u.com熱心網友回復:
為啥要自定義控制元件,幾個輸入框設定下inputType,然后加個按鈕,不是會比這個更簡單嗎uj5u.com熱心網友回復:
可以在第二個時間選擇 點擊完成的時候 自動呼叫求時間和的方法啊~uj5u.com熱心網友回復:
為啥要自定義控制元件,幾個輸入框設定下inputType,然后加個按鈕,不是會比這個更簡單嗎
用InputType固然是可以的,但是要對最大值最小值進行約束,做成自定義控制元件有幾個好處:1,統一的界面,多處用到,放一個就是了; 2,用戶能清楚地知道最大值和最小值的范圍,不會發生盲目輸入。 3, 時間單位是變化的,有時候是mm:ss 有時候是 hh:mm, 有時候是mm:10ms,做成了自定義控制元件,我能根據輸入的型別值,直接顯示和換算
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/7767.html
標籤:Android
