android TextWatcher与微调器

时间:2016-06-23 12:25:47

标签: android android-spinner textwatcher

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

我认为因为我在onTextChanged函数中写了我的逻辑, 我也在beforeTextChanged中调用了相同的逻辑,但dit在我输入内容之前不会改变..

我试过的代码:

 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           
   }
}

2 个答案:

答案 0 :(得分:2)

当您更改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
    }

});

答案 1 :(得分:1)

如果我理解正确: TextView已编辑 - &gt;旋转器改变了 在Spinner中选择的元素 - &gt; TextView已更改。

所以你需要一个用于textview的监听器(TextWatcher)和另一个用于微调器的监听器:

yourSpinner.setOnItemSelectedListener(yourListener);

使用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) {

        }
    });