我想根据所选月份显示天数。就像选择的月份是1月的展示日期到31,但如果它是2月展示到29岁。我看到并尝试了一些解决方案,但他们没有为我工作。
这是我的SignUpActivity类:
public class SignupActivity extends AppCompatActivity {
EditText first;
EditText last;
TextView birth;
Spinner month;
Spinner date;
Spinner year;
EditText email;
EditText phone;
EditText username;
EditText password;
Button done;
String[] dayOptions = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
};
String[] dayOptions2 = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
first = (EditText) findViewById(R.id.firstName);
last = (EditText) findViewById(R.id.lastName);
birth = (TextView) findViewById(R.id.birthText);
month = (Spinner) findViewById(R.id.birthMonth);
date = (Spinner) findViewById(R.id.birthDate);
year = (Spinner) findViewById(R.id.birthYear);
email = (EditText) findViewById(R.id.email);
phone = (EditText) findViewById(R.id.phoneNumber);
username = (EditText) findViewById(R.id.usernameEdit);
password = (EditText) findViewById(R.id.passwordEdit);
done = (Button) findViewById(R.id.done);
// month dropdown
final Spinner monthDrop = (Spinner) findViewById(R.id.birthMonth);
String[] monthOptions = new String[]{
"January", "February", "March", "April", "June", "July", "August", "September", "October", "November", "December"
};
ArrayAdapter<String> monthAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, monthOptions);
monthDrop.setAdapter(monthAdapter);
// days dropdown
Spinner dateDrop = (Spinner) findViewById(R.id.birthDate);
String[] dayOptions = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, dayOptions);
dateDrop.setAdapter(adapter);
// year dropdown
Spinner yearDrop = (Spinner) findViewById(R.id.birthYear);
String[] yearOptions = new String[]{
"1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "20012", "2003", "2004", "2005", "2006"
};
ArrayAdapter<String> yearAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, yearOptions);
yearDrop.setAdapter(yearAdapter);
// CharSequence[] dateOptions = new CharSequence[] {
// };
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (first.getText().toString().equals("") || last.getText().toString().equals("") ||
email.getText().toString().equals("") || phone.getText().toString().equals("") ||
username.getText().toString().equals("") || password.getText().toString().equals("") || first.getText().toString().startsWith(" ") ||
last.getText().toString().startsWith(" ") || email.getText().toString().startsWith(" ") || phone.getText().toString().startsWith(" ") ||
username.getText().toString().startsWith(" ") || password.getText().toString().startsWith(" ")) {
Toast.makeText(getApplicationContext(), "Please fill all blanks", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(SignupActivity.this, MainActivity.class);
startActivity(intent);
Toast.makeText(getApplicationContext(), "You have been signed up as " + first.getText().toString() + " " + last.getText().toString() + " (" + username.getText().toString() + ")", Toast.LENGTH_SHORT).show();
}
}
});
}
任何帮助将不胜感激!提前谢谢!
更新:我尝试了@ siva35的答案,但日期下拉选项全部消失了。我的代码是:
month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// int intPosition = position;
if(position == 0 || position == 2 || position == 4 || position == 5 || position == 7 || position == 9 ||position == 11) {
// Spinner date = (Spinner) findViewById(R.id.birthDate);
String[] dayOptions = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
date.setAdapter(adapter);
} else if(position == 3 || position == 5 || position == 6 || position == 9 || position == 11 ) {
String[] dayOptions = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
date.setAdapter(adapter);
} else if(position == 1) {
String[] dayOptions = new String[]{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28"
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
date.setAdapter(adapter);
} else {
Toast.makeText(getApplicationContext(), "Not working", Toast.LENGTH_LONG).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
Toast.makeText(getApplicationContext(), "Please select something", Toast.LENGTH_LONG).show();
}
});
答案 0 :(得分:1)
使用OnItemSelectedListener()
方法。
month.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// your code here to display date options
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
})
答案 1 :(得分:0)
谢谢@ siva35的回答!我得到了自己问题的答案。我的代码是:
month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
List<String> s = Arrays.asList(getResources().getStringArray(R.array.item_day));
if (pos == 0 || pos == 2 || pos == 4 || pos == 8 || pos == 9
|| pos == 11) {
ArrayAdapter<String> dayadapter = new ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
date.setAdapter(dayadapter);
} else if (pos == 1) {
s = s.subList(0,28);
ArrayAdapter<String> dayadapter = new ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
date.setAdapter(dayadapter);
} else {
s = s.subList(0,30);
ArrayAdapter<String> dayadapter = new ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
date.setAdapter(dayadapter);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Toast.makeText(getApplicationContext(), "Please select something", Toast.LENGTH_SHORT).show();
}
});