【问题标题】:Spinner value based on edit text input基于编辑文本输入的微调器值
【发布时间】:2019-07-02 05:51:41
【问题描述】:

我创建了一个编辑文本和一个微调器,在微调器中,有多个选择,它们是永久的和临时的。如果我在编辑文本中输入“品牌”,那么在微调器中它应该只显示永久不显示临时但如果我输入任何其他单词它应该显示永久或临时

我试过如果我输入整数然后它返回月份名称。 例如:如果我输入 6,那么在微调器中它会显示六月。

主要活动代码

        edit = (EditText) findViewById(R.id.editText);
        spinner = (Spinner) findViewById(R.id.spinner);

        String[] months = new DateFormatSymbols().getMonths();


        ArrayAdapter adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_spinner_item,months);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new 
        AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, 
            int position, long id)
            {
                edit.setText(String.valueOf(position + 1));
            }


        });

        edit.addTextChangedListener(new TextWatcher()
        {

            @Override
            public void afterTextChanged(Editable s)
            {
                try
                {

                  int nPosition = Integer.parseInt(s.toString());
                    if (nPosition >= 1 && nPosition <= 12)
                    {
                        spinner.setSelection(nPosition - 1);
                    }
                }
                catch(NumberFormatException nfe)
                {

                }
            }
        });

【问题讨论】:

  • 上面的代码和你问的问题有什么关系?
  • 问题是我是 Android 和 Java 的新手,所以不知道在哪里以及如何更改以获得我的输出。我从互联网上得到了这段代码,所以我不明白。跨度>
  • 付出一些努力,尝试自己,即使它不起作用,也发布您的代码并解释您的努力。
  • 有什么问题?
  • 这里的代码解释了如果他们输入一个整数,它会显示月份名称,对我来说,如果我在编辑文本中输入名为“Brand”的名称,那么在微调器中它应该只显示永久,如果我输入应显示为永久或临时的任何其他字词。

标签: java android android-edittext android-spinner


【解决方案1】:

试试这个……

public class Main2Activity extends AppCompatActivity {

Spinner sp1;

ArrayAdapter<String> sAdapter1;
ArrayAdapter<String> sAdapter2;
String s1[] = {"Permanent"};
String s2[] = {"Permanent", "Temporary"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    sp1 = (Spinner) findViewById(R.id.spinner1);
    EditText et = (EditText) findViewById(R.id.editText1);

    sAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s1);
    sAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    sAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s2);
    sAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editable.toString().equals("Brand")) {
                sp1.setAdapter(sAdapter1);
            } else {
                sp1.setAdapter(sAdapter2);
            }
        }
    });

}
}

【讨论】:

  • 我怎样才能做到这一点。我希望根据所选微调器值更改编辑文本?
【解决方案2】:

创建两个数组

String[] array1 = new String[]{"Permanent"};
String[] array2 = new String[]{"Permanent", "Temporary"};

现在,在 EditText textChanged 侦听器上根据您的条件使用合适的数组初始化微调器适配器

edit.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable s)
            {
                if(s.toString.equals("BRAND")){
                    spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array1)
                }else{
                    spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array2)
                }
                spinner.setAdapter(spinnerAdapter);
            }
        });

【讨论】:

  • 我已经尝试过了,但是如果我在编辑文本中自动输入一个单词,它会抛出线程并关闭应用程序。 @Rohan Shrestha
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多