From 3a54da2faafb977b31350f673bc49b92f89c00ea Mon Sep 17 00:00:00 2001 From: sospartan Date: Wed, 29 Jun 2016 14:38:20 +0800 Subject: [PATCH] * [android] fix input restore init value when batch --- .../com/taobao/weex/ui/component/WXInput.java | 75 +++++++++---------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXInput.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXInput.java index 54cc710d88..565d40625d 100755 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXInput.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXInput.java @@ -261,6 +261,8 @@ protected void initView() { inputView.setSingleLine();//default use single line , same to ios inputView.setMovementMethod(null); + inputView.setText((String) mDomObj.attr.get("value")); + mHost = inputView; } @@ -276,43 +278,48 @@ public void addEvent(String type) { return; } final TextView text = (WXEditText) mHost; - text.setOnFocusChangeListener(new View.OnFocusChangeListener() { - CharSequence mLastValue = text.getText(); - @Override - public void onFocusChange(View v, boolean hasFocus) { - CharSequence newValue = text.getText(); - newValue = newValue== null?"":newValue; - if(!hasFocus && !newValue.equals(mLastValue)){ - mLastValue = newValue; - - String event = mDomObj.event.contains(WXEventType.INPUT_CHANGE)?WXEventType.INPUT_CHANGE:null; - fireEvent(event,newValue.toString()); - } - } - }); - text.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } + if(type.equals(WXEventType.INPUT_CHANGE)) { + text.setOnFocusChangeListener(new View.OnFocusChangeListener() { + CharSequence mLastValue = text.getText(); - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - if (mBeforeText.equals(s.toString())) { - return; + @Override + public void onFocusChange(View v, boolean hasFocus) { + CharSequence newValue = text.getText(); + newValue = newValue == null ? "" : newValue; + if (!hasFocus && !newValue.equals(mLastValue)) { + mLastValue = newValue; + + String event = mDomObj.event.contains(WXEventType.INPUT_CHANGE) ? WXEventType.INPUT_CHANGE : null; + fireEvent(event, newValue.toString()); + } } + }); + }else if(type.equals(WXEventType.INPUT)) { + text.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { - String event = mDomObj.event.contains(WXEventType.INPUT)?WXEventType.INPUT:null; - fireEvent(event,s.toString()); + } - mBeforeText = s.toString(); - } + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (mBeforeText.equals(s.toString())) { + return; + } - @Override - public void afterTextChanged(Editable s) { + String event = mDomObj.event.contains(WXEventType.INPUT) ? WXEventType.INPUT : null; + fireEvent(event, s.toString()); - } - }); + mBeforeText = s.toString(); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } } private void fireEvent(String event,String value){ @@ -331,14 +338,6 @@ private void fireEvent(String event,String value){ } - @Override - public void updateExtra(Object extra) { - if (extra instanceof Layout && - getView() != null) { - getView().setText(((Layout) extra).getText()); - } - } - @WXComponentProp(name = WXDomPropConstant.WX_ATTR_INPUT_PLACEHOLDER) public void setPlaceholder(String placeholder) { if (placeholder == null || mHost == null) {