我目前正致力於在android studio中創建應用程序。我面臨的問題是根據微調器中選擇的編號生成許多「純文本」對象。我已經包括下面的活動的佈局。基於選擇的微調器值生成純文本字段?
layout of activity can be seen here
一旦「人數」採摘,那麼該地區進入名稱將基於該生成的人民。最大人數將是4.
任何幫助如何做到這一點將不勝感激!
我目前正致力於在android studio中創建應用程序。我面臨的問題是根據微調器中選擇的編號生成許多「純文本」對象。我已經包括下面的活動的佈局。基於選擇的微調器值生成純文本字段?
layout of activity can be seen here
一旦「人數」採摘,那麼該地區進入名稱將基於該生成的人民。最大人數將是4.
任何幫助如何做到這一點將不勝感激!
您只需將所有4個EditText的可見性設置爲false並將偵聽器設置爲微調器即可。並在偵聽器中添加if else語句,並根據所選內容爲EditText字段設置可見性。
我會建議在你的微調器上使用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)
{
}
});
祝你好運。
好主意,除了大量的if-else語句有很多重複。你可以做'person1.setVisibility(value> = 1? View.VISIBLE:View.GONE);'爲每個視圖添加一次。 – RobCo
我還沒有嘗試過,但是如果它可以工作,它可以減少'if'循環...雖然'if else'循環只是檢查整數值,所以我不確定性能對應用程序嗎? – ConorBeckett
表現不會是問題。這關乎可讀性和可維護性。如果你想增加10行的最大行數,你現在必須添加接近100行,而不是僅僅是6. – RobCo