시간표 어플을 만드는중인데요


시간표의 각 칸을 클릭하면 그시간에 맞는 과목 리스트가 다이얼로그로 제공됩니다.


시간표의 각 칸에 setOnEvent로 클릭시 위치에 맞는 시간을 계산해서 


subjectlist리스트에 넣어줍니다.


public void setOnEvent() {

// / 월화수목금 이들어가있는 부분에는 눌러도 반응할 필요 없음

for (int i = COLS; i < COLS * ROWS; i++) {

if (i % COLS == 0)

continue;


final int k = i;

//수업이 없는 텍스트뷰는 클릭불가

if (subinfo[k].subnum != 0)

{

m_cellTextBtn[i].setOnClickListener(new Button.OnClickListener() {

public void onClick(View v)

{

textchoice = k;

int pos = subinfo[textchoice].startpos;

int num = subinfo[textchoice].subnum;

int m = 0, n = 0;

// 3개의 리스트가 있다면 3개만 채워주고 나머지는 ""값으로 채워줌

for (m = 0; m < num; m++)

{

if (m_msub[pos + m].dividedclass.length() == 0)

subjectlist[m] = m_msub[pos + m].subjectname;

else

subjectlist[m] = m_msub[pos + m].subjectname+ "("+ m_msub[pos + m].dividedclass+ ")";

Log.e("----------", "setOnClickListener"+subjectlist[m].toString());

}

for (n = m; n < 5; n++) {

subjectlist[n] = "";

}

showDialog(5);

}

});

}

}

}




이러한 subjectlist를 가지고 onCreateDialog에서 처리해주는데 다이얼로그에서 이전에 보이던 subjectlist값으로 보여줍니다.


한번더 리스트를 클릭해야 최신으로 갱신됩니다. 이 문제를 어떻게 처리해야 할지 고민입니다.



@Override

protected Dialog onCreateDialog(int id)

{

switch (id) {

case DIALOG_SINGLE_CHOICE:

return new AlertDialog.Builder(m_context)

.setIcon(android.R.drawable.ic_dialog_alert)

.setTitle("짝꿍 선택하기")

.setSingleChoiceItems(subjectlist, 0,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

/*

 * User clicked on a radio button do some

 * stuff

 */

Log.e("-------", "DIALOG_SINGLE_CHOICE");

choice = whichButton;

}

})

.setPositiveButton("예",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

/* User clicked Yes so do some stuff */

Log.e("-------", "예버튼클릭");

m_cellTextBtn[textchoice].setText(subjectlist[choice]);

}

})

.setNegativeButton("아니오",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

/* User clicked No so do some stuff */

Log.e("-------", "아니오버튼클릭");

}

}).create();

}