일정관리 어플리케이션(주간일정)을 만들던중 갑작스런 문제에 봉착하여 이렇게 질문을 하게 됩니다.

DB에서 입력한 날짜를 불러와 이번주의 날짜들과 같으면 리스트뷰에 출력하는 형태입니다.
리스뷰에 출력까지는 되는데 리스트뷰에서 선택을 하여 다음 화면으로 넘어갈때 선택한 날짜의 정보가 아닌 다른 정보들이 불러와 집니다.
그리고 일부는 선택하면 오류가 나타납니다. 

아래 소스를 첨부하니 꼭 해결방안을 알려 주셨으면 좋겠습니다. 


아 그리고 이건 다른 질문인데 일정관리어플에 알림기능을 추가하려고 합니다. 
DB에서 알림이 울릴 날짜와 언제 울릴지(5분전,10분전 이런식)에 대한 정보를 받아오고 있습니다.
이 데이터를 가지고 알람을 만드려고 하는데 어떤 함수와 어떤식으로 해야할지 전혀 감을 못 잡고 있습니다.
이것에 대한 답변도 해주시면 감사하겠습니다..

----------------------------------------------------소스 --------------------------------------------------------------------

package kt.yjc.yh;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class Week_List extends Activity implements OnItemClickListener {

ListView list;
SimpleAdapter si;

TextView view_sub, test;
String i, subj, date;
Button add, modify;

Cursor cursor;
DBManager dbmgr;
SQLiteDatabase sdb;
String sql;

final static String dbName = "myDB.db";
final static int dbVersion = 1;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.week_list);

dbmgr = new DBManager(this);
sdb = dbmgr.getReadableDatabase();
cursor = sdb.rawQuery("SELECT * FROM calendar ", null);
cursor.moveToFirst();
TextView t1 = (TextView) findViewById(R.id.textView1);

ListView list = (ListView) findViewById(R.id.wlist);
list.setOnItemClickListener(this);
ArrayList<HashMap<String, String>> mlist = new ArrayList<HashMap<String, String>>();

String rDate = getParameter("date"); // 지정일자
if (rDate == null) {

String[] month = new String[12];
for (int k = 0; k < 12; k++) {
if (k < 9)
month[k] = "0" + String.valueOf(k + 1);
else
month[k] = String.valueOf(k + 1);

}
Calendar calendar = Calendar.getInstance();
String day = String.valueOf(calendar.get(Calendar.DATE));
rDate = calendar.get(Calendar.YEAR)
+ month[(calendar.get(Calendar.MONTH))] + day;
}

SimpleDateFormat f = new SimpleDateFormat("yyyy년 M월 dd일");
SimpleDateFormat f2 = new SimpleDateFormat("E", java.util.Locale.KOREA);// 요일

// 지정일
Calendar rday = new GregorianCalendar();
rday.set(Integer.parseInt(rDate.substring(0, 4)),
Integer.parseInt(rDate.substring(4, 6)) - 1,
Integer.parseInt(rDate.substring(6, 8)));

// 처음시작요일
Calendar sday = (Calendar) rday.clone();
int _m = rday.get(Calendar.DAY_OF_WEEK) - 1;// 일요일
sday.add(Calendar.DAY_OF_MONTH, _m * -1);

// 마지막요일
Calendar eday = (Calendar) rday.clone();
int _m2 = 7 - rday.get(Calendar.DAY_OF_WEEK);// 토요일
eday.add(Calendar.DAY_OF_MONTH, _m2);

Calendar cday = (Calendar) sday.clone();
t1.setText(cday.get(Calendar.WEEK_OF_YEAR) + "주차 주간일정");
t1.setTextSize(30);
for (int i = 0; i < 7; i++) {

String we = f.format(cday.getTime());
cursor = sdb.rawQuery("select * from calendar where start_day=\'"
+ we + "\' order by subject", null);
cday.add(Calendar.DAY_OF_MONTH, +1);
cursor.moveToFirst();

if (cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put("item1",
cursor.getString(cursor.getColumnIndex("subject")));
map.put("item2", cursor.getString(cursor
.getColumnIndex("start_day")));
mlist.add(map);
} while (cursor.moveToNext());
}
SimpleAdapter sap = new SimpleAdapter(this, mlist,
android.R.layout.simple_list_item_2, new String[] { "item1",
"item2" }, new int[] { android.R.id.text1, android.R.id.text2 });
list.setAdapter(sap);
dbmgr.close();
sdb.close();
}

private String getParameter(String string) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
cursor.moveToPosition(position);

String wsu = cursor.getString(cursor.getColumnIndex("subject"));
String wcon = cursor.getString(cursor.getColumnIndex("content"));
Toast.makeText(getApplicationContext(), wsu, 100).show();
String wstd = cursor.getString(cursor.getColumnIndex("start_day"));
String wstt = cursor.getString(cursor.getColumnIndex("start_time"));
String wend = cursor.getString(cursor.getColumnIndex("end_day"));
String went = cursor.getString(cursor.getColumnIndex("end_time"));
String wala = cursor.getString(cursor.getColumnIndex("alarm"));

// cursor.moveToNext();
// cursor.moveToNext();

Log.i("인텐트", wsu);
Intent ui = new Intent(Week_List.this, Week_View.class);

ui.putExtra("wsubject", wsu);
ui.putExtra("wcontent", wcon);
ui.putExtra("wstartday", wstd);
ui.putExtra("wstarttime", wstt);
ui.putExtra("wendday", wend);
ui.putExtra("wendtime", went);
ui.putExtra("wcontent", wcon);
ui.putExtra("walarm", wala);

// Log.i("앙", "dbsubject");
startActivity(ui);
}

}


----- DB 내용입니다. -----------------------------------------------
db.execSQL("create table calendar (_id INTEGER PRIMARY KEY AUTOINCREMENT, subject text, content text, " +
"start_day text, start_time text, end_day text, end_time text, alarm text);");