android 带有微调器的 TextWatcher 问题

Issue with android TextWatcher with spinners

布局有一个编辑文本和微调器,当编辑文本中有任何内容 typed/typing 时,该值会按我想要的方式更改,但问题是当我更改微调器值时,文本不会更改,直到我在编辑文本中输入内容。 其实我想要的是当微调项改变时,我想在编辑文本中显示当前值的结果。

我想是因为我在 onTextChanged 函数中写了我的逻辑, 我也在 beforeTextChanged 中调用了相同的逻辑,但是直到我输入一些东西才改变..

我试过的代码:

 cc.input.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {


        }

        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) {

            aLogic(cc);
        }

        public void onTextChanged(CharSequence s, int start,
                                  int before, int count) {
            aLogic(cc);
        }
    });



private void aLogic(uc) {
    ........
     if (subunit.equals("aa")) {
     //something           
    }
     if (subunit.equals("aaaaaa")) {
     //something           
    }if (subunit.equals("aaa")) {
     //something           
   }
}

如果我没理解错的话: TextView 已编辑 -> Spinner 已更改 在 Spinner -> TextView 中选择的元素已更改。

因此您需要一个用于文本视图的侦听器 (TextWatcher) 和另一个用于微调器的侦听器:

yourSpinner.setOnItemSelectedListener(你的听众);

里面有 textview.setText(yourSelectedValue)。

但我会警告您您的解决方案:您描述的行为是小部件 AutoCompleteTextView 的行为。

否则就是:

yourSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            YourObject o = parent.getItemAtPosition(position);
            aLogic(....);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

当您更改spinner值时,表示您触发了OnItemSelectedListener。所以你必须在上面做你的逻辑:

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // Here you change your value or do whatever you want
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // Here comes when you didnt choose anything from your spinner logic
    }

});