Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Initialize date in android datepicker to a specific date, that is not the current date.

In my app I have a date saved in a remote database that I want the date picker to be set to. I've researched and only found examples of setting the datepicker today's date via Calender java util. Example:

final Calendar c = Calendar.getInstance();
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DAY_OF_MONTH);

How can I use the Calendar to display my date from the database and not today's date? Do you have any suggestions or examples I can follow?

Update: After experimenting with Calendar I tried to use

     // set Date
            String eventYear =date.substring(0,4);
            String eventDay =date.substring(5,7);
            String eventMonth =date.substring(8,10);
        //convert string to int for because calendar only takes int: set(int,int)
        int month = Integer.parseInt(eventMonth);
  final Calendar c = Calendar.getInstance();
     mMonth=c.get(c.set(Calendar.MONTH, Calendar.month));
// or   mMonth=c.get(Calendar.MONTH, Calendar.month);

Generates error that says cannot convert int to void.

How can I use Calendar to set it to a specific date? According to google's developers site I should be able to do this. http://developer.android.com/reference/java/util/Calendar.html

example:

set(Calendar.MONTH, Calendar.SEPTEMBER)

I'd like the date to be display in the datepicker from the server as a default value.

like image 300
Leoa Avatar asked Jun 14 '12 07:06

Leoa


2 Answers

U can use the updateDate(year, month, day_of_month); date picker returns integer values of day, month and year. so the parameters must be integer values. and the integer value for the month jan in the date picker is 0.

i needed to put the date extracted from a database into a datepicker. I wrote the following code and it works.

DatePicker DOB;
SQLiteDatabase db;

DOB=(DatePicker)findViewById(R.id.datePicker1);

db = openOrCreateDatabase("BdaySMS", SQLiteDatabase.CREATE_IF_NECESSARY, null);
Cursor cur = db.rawQuery("select * from BdaySMS where ph='"+pn+"';", null);//pn is the phone no.

if(cur.moveToFirst())
{
    name.setText(cur.getString(0));
    phone.setText(cur.getString(1));
    DOB.updateDate(Integer.parseInt(cur.getString(4)),Integer.parseInt(cur.getString(3)),Integer.parseInt(cur.getString(2)));
    message.setText(cur.getString(5));
}
like image 128
SABYASACHI Avatar answered Sep 21 '22 17:09

SABYASACHI


Use JodaTime

Here's a simple example of how I set a DatePicker and TimePicker from a DateTime object, which could be the current date or any date from the past or future (the attribute in this case is called inspected_at):

DatePicker dp = (DatePicker) findViewById(R.id.inspected_at_date);
TimePicker tp = (TimePicker) findViewById(R.id.inspected_at_time);

DateTime inspected_at = DateTime.now().minusYears(1); // Typically pulled from DB.

int year    = inspected_at.getYear() ;
int month   = inspected_at.getMonthOfYear() - 1;      // Need to subtract 1 here.
int day     = inspected_at.getDayOfMonth();  
int hour    = inspected_at.getHourOfDay();
int minutes = inspected_at.getMinuteOfHour();

dp.updateDate(year, month, day);
tp.setCurrentHour(hour);
tp.setCurrentMinute(minutes);

Hope that helps.

JP

like image 32
Joshua Pinter Avatar answered Sep 20 '22 17:09

Joshua Pinter