Я создаю приложение для Android и сталкиваюсь с проблемой с DatePicker
. Моя реализация (так, как я ее хочу) выглядит следующим образом: A GridView
(с изображениями) и по выбранному элементу начинают новое намерение. На конкретный элемент, я хочу, во-первых, запустить DatePicker
и по выбору DatePicker
, начать новое намерение. Проблема в том, что или DatePicker
запустит позже, что предполагается, или он не начнется вообще. Если кто-нибудь может помочь, я буду благодарен (о коде или если он сможет предоставить мне еще одно правильное решение для реализации).Android: Datepicker внутри GridView
Так что у меня этот код в onCreate()
:
gridview.setAdapter(myAdapter);
calendarDate = Calendar.getInstance();
caseCalendar = Calendar.getInstance();
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
if(position == 7){
onCustomDatePicker();
if(caseCalendar.get(Calendar.DAY_OF_YEAR) < calendarDate.get(Calendar.DAY_OF_YEAR)){
Toast.makeText(getBaseContext(), "Πρέπει να επιλέξεις μεταγενέστερη ημερομηνία", Toast.LENGTH_SHORT).show();
onCustomDatePicker();
}
}
else{
caseCalendar = calendarDate;
}
Intent intent = new Intent(getBaseContext(), Customize.class);
ViewHolder holder = (ViewHolder) v.getTag();
DateWithImage temp = (DateWithImage) holder.image.getTag();
intent.putExtra("image",temp.getImageID());
intent.putExtra("option",position);
intent.putExtra("info",temp.getInfo());
intent.putExtra("calendar", calendarDate);
intent.putExtra("caseCalendar", caseCalendar);
startActivity(intent);
Toast.makeText(getBaseContext(), "" + position, Toast.LENGTH_SHORT).show();
}
});
и этот код для DatePicker
:
private void onCustomDatePicker(){
new DatePickerDialog(this, d, caseCalendar.get(Calendar.YEAR),caseCalendar.get(Calendar.MONTH),caseCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
caseCalendar.set(Calendar.YEAR, year);
caseCalendar.set(Calendar.MONTH, monthOfYear);
caseCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
}
};
Я пытаюсь установить новую дату в caseCalendar
и сравнить его с calendarDate
(который содержит текущую дату).
Спасибо за ваш ответ, но он не работает, хотя ваша реализация дала мне несколько полезных советов. К сожалению, или я застрял с дампикером, или новое намерение появится, прежде чем я смогу выбрать. –