1

通过阅读 Android 文档,我了解到无法将 addTextChangedListener 用于 Spinner,但是是否有我缺少的替代方法?

我已经创建了许多表单,并且我想在有未保存的更改时通知用户(当我使用 EditText 框时我可以这样做)。

下面是 EditText 的 textChangeListener 示例:

     inspectionReferenceEditText.addTextChangedListener(new TextWatcher(){
         public void afterTextChanged(Editable s) {
         }
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
         }
         public void onTextChanged(CharSequence s, int start, int before, int count) {
             changesMade = true;
         }

非常感谢。

4

1 回答 1

3

由于 Spinner 不涉及用户输入文本,我看不出 TextWatcher 将如何提供帮助。但是,您可以使用OnItemSelectedListener在用户进行更改时收到通知。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    int previous = -1;
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        if(previous != position && previous < -1) {
            Log.v("Example", "Item Selected: " + parent.getItemAtPosition(position).toString());
            // Do something
        }
        previous = position;
    }

    public void onNothingSelected(AdapterView<?> parent) {}
});
于 2012-10-05T19:10:12.470 回答