2010-10-03 68 views
3

在我的應用程序中,我有一個在SortedMap內添加/刪除/編輯記錄的活動。該活動作爲ListActivity的擴展實施。我已經爲收集物品實施了自定義ArrayAdapter如何在ListView中正確處理Android EditText輸入?

每個ListView項(對應於基礎記錄)由TextView s,EditText s和Button組成,用於刪除記錄本身。佈局大致如下:

ListView 
---------------------------------------------------- 
[TextView] [EditText] [TextView] [EditText] [Button] 
---------------------------------------------------- 
[TextView] [EditText] [TextView] [EditText] [Button] 

我的目標是隻要用戶完成編輯處理輸入用戶鍵入的EditText S,即當用戶瀏覽從EditText離開或用戶有按下以關閉屏幕鍵盤。

我試圖通過處理onFocusChanged來處理EditText中可見的文本。但是,這種方法運行不正常,onFocusChanged方法被稱爲非常頻繁和隨機,即使未選中&未經編輯的EditText s。這可能是由於StackOverflow questionthis article on Android Blog

有沒有更好的方法來做到這一點?

回答

2
TextView

,其EditText延伸,包括方法public void addTextChangedListener (TextWatcher watcher)可能對您有用。

我以前沒有使用它,但似乎在用戶編輯TextView時隨時會調用它,然後每次更改時都可以處理它。如果每次用戶刪除或添加角色時都會調用這些開銷,但這可能是最簡單的解決方案。

+0

嘗試了這一點,主要的警告是,你不能區分由listview引起的虛假「變化」和用戶真正的變化之間的差異。檢查計數將不起作用,因爲用戶可以通過全選刪除整行。 – 2011-11-01 05:34:35