마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

달력에 스티커를 붙이려고 하는데요

0 추천
package check;

import java.util.ArrayList;
import java.util.Calendar;

import sqlite.DBManager;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;

import com.example.infinity_01.MainPage;
import com.example.infinity_01.R;

public class Check extends Activity {

	int st = 0;
	SharedPreferences preferences;
	SharedPreferences.Editor preference_editor;
	int todayStart = 0;
	int today = 0;
	int month=0;
	int date=0;
	SQLiteOpenHelper dbhelper;
	SQLiteDatabase db;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_check);

		
		//stresschek.db 생성
		dbhelper = new DBManager(this);
		db = dbhelper.getWritableDatabase();
		
		
		Calendar cal = Calendar.getInstance();
		today += cal.get(Calendar.YEAR);
		today += cal.get(Calendar.MONTH)+1;
		today += cal.get(Calendar.DATE);		
		
		month = cal.get(Calendar.MONTH)+1;
		date = cal.get(Calendar.DATE);
		// 프리퍼런스 읽기
		preferences = getSharedPreferences("Start_2", MODE_PRIVATE);
		todayStart = preferences.getInt("Start_2", 0);

		ArrayList<String> arData = new ArrayList<String>();
		arData.add("예상치 못했던 일 때문에 당황하는 일이 잦다");
		arData.add("중요한 일들을 조절할 수 없다는 느낌을 받는다.");
		arData.add("신경이 예민해지고 스트레스를 받고 있다는 느낌을 자주 경험했다.");
		arData.add("자신의 개인적 문제들을 다루는 데 있어서 자신감이 없다.");
		arData.add("일상이 생각대로 진행되지 않는 것 같다.");
		arData.add("내가 꼭 해야 하는 일들을 처리할 수 없을 것만 같다.");
		arData.add("일상생활의 짜증을 잘 다스릴 수 없다.");
		arData.add("컨디션이 안좋다고 자주 느낀다.");
		arData.add("내가 통제할 수 없는 일 때문에 화가 난 경험이 많다.");
		arData.add("어려운 일들이 너무 많이 쌓여서 극복하지 못할 것만 같다");

		// #2. Adapter 설정하기
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_checked, arData);

		// #3. 리스트와 Adapter 연결하기
		ListView list = (ListView) findViewById(R.id.list);
		list.setAdapter(adapter);
		list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

		list.setOnItemClickListener(mItemClickListener);

		Button submit = (Button) findViewById(R.id.submit);
		submit.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(todayStart != today){
					ContentValues values = new ContentValues();  
				    values.put("month", month);
				    values.put("date", date);
				    values.put("listnum", st);  
				    db.insert("checklist", null, values);
				}else if(todayStart == today){
					ContentValues values = new ContentValues();  
				    values.put("month", month);
				    values.put("date", date);
				    values.put("listnum", st);  
				    db.update("checklist", values, "date="+date, null);
				}
			    
				Context mContext = Check.this;
				LayoutInflater inflater = (LayoutInflater) mContext
						.getSystemService(LAYOUT_INFLATER_SERVICE);
				LinearLayout linear = (LinearLayout) inflater.inflate(
						R.layout.iconcheck,
						(ViewGroup) findViewById(R.id.iconcheck));

				AlertDialog.Builder builder = new AlertDialog.Builder(
						Check.this);
				AlertDialog dialog;
				builder.setView(linear);
				dialog = builder.create();
				dialog.setTitle("스티커 고르기");
				linear.findViewById(R.id.green).setOnClickListener(
						new View.OnClickListener() {

							@Override
							public void onClick(View v) {
								// TODO Auto-generated method stub
								Intent intent = new Intent(Check.this,MainPage.class);
								if(todayStart == today){									
								    intent.putExtra("flag", 2);
									setResult(RESULT_FIRST_USER, intent);
								}else if(todayStart != today){
									preferences = getSharedPreferences("Start_2", MODE_PRIVATE);
									startActivity(intent);
								}
								finish();
							}
						});
				linear.findViewById(R.id.red).setOnClickListener(
						new View.OnClickListener() {

							@Override
							public void onClick(View v) {
								// TODO Auto-generated method stub
								Intent intent = new Intent(Check.this,MainPage.class);
								if(todayStart == today){		    
									intent.putExtra("flag", 1);
									setResult(RESULT_FIRST_USER, intent);
								}else if(todayStart != today){
									// 프리퍼런스 저장
									preferences = getSharedPreferences("Start_2", MODE_PRIVATE);
								    
									startActivity(intent);
								}
								finish();
							}
						});
				dialog.show();
			}
		});
	}

	AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {

		@SuppressWarnings("rawtypes")
		@Override
		public void onItemClick(AdapterView parent, View view, int position,
				long id) {
			// TODO Auto-generated method stub
			st+=1;			
			// 입력 정보를 가지고 있는 객체를 생성
			//Toast.makeText(Check.this, "오늘 날짜 "+today, Toast.LENGTH_LONG).show();
		}

	};

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		// TODO Auto-generated method stub
		outState.putInt("Start_2", MODE_PRIVATE);
		} 
}

 

linear라는 다이얼로그에 green, red라는 스티커를 놓고

스티커를 클릭하면 달력에 스티커가 붙어야 하는데

지금 소스로는 스티커를 클릭해도 바로 뜨지 않고 한번 더 클릭해야 스티커가 붙고 스티커가 붙은 상태도 저장되지 않습니다

이 부분을 수정하려고 하는데 어떻게 해야 할까요?

 

 

바른소리 (330 포인트) 님이 2013년 9월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...