我正在努力在android studio中创建一个应用程序。我面临的问题是根据在微调器中选择的数字生成许多“纯文本”对象。我已经在下面列出了活动的布局。
layout of activity can be seen here
一旦选择了“人数”,就会根据该区域生成输入人名的区域。最多人数为4人。
非常感谢任何有关如何做到这一点的帮助!
答案 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字段设置可见性。