根据选择的微调器值生成纯文本字段?

时间:2017-05-02 18:56:24

标签: java android xml

我正在努力在android studio中创建一个应用程序。我面临的问题是根据在微调器中选择的数字生成许多“纯文本”对象。我已经在下面列出了活动的布局。

layout of activity can be seen here

一旦选择了“人数”,就会根据该区域生成输入人名的区域。最多人数为4人。

非常感谢任何有关如何做到这一点的帮助!

2 个答案:

答案 0 :(得分:1)

我建议您在您的微调器上使用OnItemSelectedListener()并设置您的人员的setVisibility()'}字段。

此代码将假设您的最小人数为1.每次从微调器中选择新值时,字段将显示或消失。使用GONE进行可见性将隐藏字段,但也会删除其使用的空间。如果您想保留空间,请使用INVISIBLE

另外,请不要在xml布局代码中设置可见性,因为这可能会导致问题。

    person1 = (EditText)findViewById(R.id.person1);
    person2 = (EditText)findViewById(R.id.person2);
    person3 = (EditText)findViewById(R.id.person3);
    person4 = (EditText)findViewById(R.id.person4);

    list = new ArrayList<String>();

    list.add("1");
    list.add("2");
    list.add("3");
    list.add("4");

    spinner = (Spinner)findViewById(R.id.spinner);

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

    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)
        {
            spinnerValue = parent.getItemAtPosition(position).toString();

            int value = Integer.parseInt(spinnerValue);

            // Simpler logic for the visibility of the 'people' - kudos to RobCo for pointing this out//
            person1.setVisibility(value>=1? view.VISIBLE:View.GONE);
            person2.setVisibility(value>=2? view.VISIBLE:View.GONE);
            person3.setVisibility(value>=3? view.VISIBLE:View.GONE);
            person4.setVisibility(value>=4? view.VISIBLE:View.GONE);

          /*
            if (value == 1)
            {
                person1.setVisibility(View.VISIBLE);
                person2.setVisibility(View.GONE);
                person3.setVisibility(View.GONE);
                person4.setVisibility(View.GONE);
            }
            else if (value == 2)
            {
                person1.setVisibility(View.VISIBLE);
                person2.setVisibility(View.VISIBLE);
                person3.setVisibility(View.GONE);
                person4.setVisibility(View.GONE);
            }
            else if (value == 3)
            {
                person1.setVisibility(View.VISIBLE);
                person2.setVisibility(View.VISIBLE);
                person3.setVisibility(View.VISIBLE);
                person4.setVisibility(View.GONE);
            }
            else
            {
                person1.setVisibility(View.VISIBLE);
                person2.setVisibility(View.VISIBLE);
                person3.setVisibility(View.VISIBLE);
                person4.setVisibility(View.VISIBLE);
            }
          */

        }

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

        }
    });
祝你好运。

答案 1 :(得分:0)

您只需将所有4个EditTexts的可见性设置为false并将侦听器设置为微调器即可。在侦听器内部添加if else语句,根据选择,您可以为EditText字段设置可见性。