2017-10-21 66 views
0

一直試圖做同樣的位置: https://gist.github.com/susemi99/a45ca534cc109271f34e6c992f69f048我如何正確addTextChangeListener在Android的XML

所以我有我的EditText在XML:

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

<data> 
    <import type="test.edu.MyViewModel"/> 
    <variable type="MyViewModel" name="viewModel"/> 
</data> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

(...) 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:addTextChangeListener="@{viewModel.myTextWatcher}"/> 

(...) 

而且我有TextWatcher在MyViewModel:

public class MyViewModel extends BaseObservable { 
    public TextWatcher myTextWatcher = new TextWatcher(){ 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) {} 

     @Override 
     public void afterTextChanged(Editable editable) {} 
    }; 
} 

我認爲,我已經做到了同中提到的鏈接,但是當我嘗試編譯,我得到:

無法在android.widget.EditText上爲參數類型爲android.text.TextWatcher的屬性'app:addTextChangeListener'找到setter。

您能否給我一些關於這裏有什麼問題的提示?我認爲我提到的代碼是編譯的,但我不是100%確定的。

回答

0

我終於想通了這一點,寫它的...這只是一個錯字。而不是addText 更改聽衆我有addText 更改聽衆和說實話的錯誤消息是不是很有幫助。現在,當我知道解決方案時,它很明顯,但之前我正在檢查「app」命名空間,一些@Bind註釋,gradle選項以及類似的東西。也許這只是我,但我認爲這將是一個更容易與錯誤,如:

android.widget.EditText不具備的功能addTextChangeListener

0

你可以試試這樣:

EditText editText =(EditText)findViewById(R.id.editText1); 
    editText.addTextChangeListener(new TextWatcher(){ 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) {} 

     @Override 
     public void afterTextChanged(Editable editable) {} 
    }; 

而是在xml文件

+0

,但我知道,因爲我使用MVVM,我想以避免ViewModel中的findViewById。根據Google的說法:「ViewModel的唯一責任是管理用戶界面的數據,它永遠不應該訪問你的視圖層次結構(...)」 – LLL

相關問題