1

Iam fresher in android開始日と終了日の間の日付をsqlliteに挿入し、現在の日付と比較してリマインダーを設定する必要があることに基づいて、datepickerから開始日と終了日を選択しました。解決策があれば教えてください

4

1 に答える 1

1

日付ピッカーから日付を取得するには、これを使用します

DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth() + 1;
int year = datePicker.getYear();

値をデータベースに設定します

public  void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth){
            dateTime.set(year,monthOfYear,dayOfMonth);

   int year = year;   // Here you can get day,month and year.
   int month = monthOfYear;
   int day = dayOfMonth;

ContentValues values = new ContentValues()

values.put("Day",dayOfMonth);
values.put("Month",monthOfYear);
values.put("Year",year);

}

ここここここからデータベースのチュートリアルを入手できます

現在の日付を取得するには

String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());

リマインダーを設定する には、alaramマネージャーを使用してリマインダーを設定できます。解決策はここにあります。

編集2

private class myReminderTask extends AsyncTask<Void, Void, Void>{
    ArrayList<String> list = new ArrayList<String>();
    @Override
    protected Void doInBackground(Void... params) {
        while(true)
        for(String s : list){
            Date d = //Make date from the string obtained from SQL
            d.toString().equals(DateFormat.getDateTimeInstance().format(new Date()));

            //Create an alaram or notification
        }

        return null;
    }

    @Override
    protected void onPreExecute() {

        Cursor c = null;
        c = db.rawQuery("select startDate,endDate from tablename" , null);

        if (cursor.getCount() != 0)
            {
                if (cursor.moveToFirst())
                {
                    do
                    {
                        list.add(cursor.getString(cursor.getColumnIndex("FirstDate")));
                        list.add(cursor.getString(cursor.getColumnIndex("LastDate")));
                    } while (cursor.moveToNext());
                }
                db.closeDatabase();
            }
            cursor.close();

        super.onPreExecute();
    }

}

メインUIスレッドがブロックされないように、 AsyncTaskここでも例)ですべてを実行します。実行前のコードでは、データベースフェッチを実行し、バックグラウンドで実行して、whileループを使用して終了しないようにします。

これは私があなたに仕事をさせる休息を与えることができるものです...そしてそれはすべてです、あなたがあなたの方法を探して解決しなければならない休息は私がプロジェクト全体を作って与えることを期待しないでください

于 2012-11-08T05:04:13.563 に答える