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

리스트뷰를 클릭하여 다른 xml파일에 값넣는 방법좀요.....

0 추천

이번에 학교 프로젝트로 일정관리어플을 만들고 있는데요.

달력을 클릭해서 일정을 추가하고 그 일정들을 날짜에 맞게 리스트 뷰로 출력하는 것까지는 되는데요

출력된 리스트 뷰를 클릭하면 수정과 삭제가 되는 ui에 클릭한 데이터 값을 넣고 싶습니다.

package com.example.sinyoung.scheduler;

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

import java.util.ArrayList;
import java.util.HashMap;

import static android.R.id.list;

/**
 * Created by SinYoung on 2017-05-27.
 */

public class javaDaySchedule extends Activity {
    DBHelper helper;
    SQLiteDatabase db;
    String CalenderV;
    ArrayAdapter arrayAdapter;
    ArrayList<HashMap<String, String>> personList;


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

        helper = new DBHelper(this);
        db = helper.getWritableDatabase();

        personList = new ArrayList<HashMap<String,String>>();



        if (savedInstanceState == null) {
            Bundle extras = getIntent().getExtras();
            if(extras == null) {
                CalenderV= null;
            } else {
                CalenderV= extras.getString("STRING_I_NEED");
            }
        } else {
            CalenderV= (String) savedInstanceState.getSerializable("STRING_I_NEED");
        }

        TextView testView = (TextView)findViewById(R.id.textView);
        testView.setText(CalenderV);

        try {
            db = helper.getWritableDatabase();
        } catch (SQLiteException ex){
            db = helper.getReadableDatabase();
        }
        Cursor cursor = db.rawQuery("SELECT * FROM schedule WHERE Date='"+CalenderV+"'",null);
        startManagingCursor(cursor);

        String[] from = {"Title","Content"};
        int[] to = {android.R.id.text1,android.R.id.text2};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cursor,from,to);
        ListView list = (ListView) findViewById(R.id.listview2);
        list.setAdapter(adapter);

        ArrayList array_list = helper.getAllschedule();
        arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_2,array_list);

        //넘겨주는 부분
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                int id = arg2 + 1;
                Bundle dataBundle = new Bundle();
                dataBundle.putInt("id", id);
                Intent intent = new Intent(javaDaySchedule.this,javaScheduleUptate.class);
                intent.putExtras(dataBundle);
                startActivity(intent);
            }
        });

        Button b = (Button)findViewById(R.id.dayscheduleAdd);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(javaDaySchedule.this,javaScheduleadd.class);
                intent.putExtra("STRING_I_NEED",CalenderV);
                javaDaySchedule.this.startActivity(intent);
            }
        });
    }
    public void onButtonCreateActivity(View v){
        finish();
    }

위 소스 ui

여기서 aaaa를 클릭하면 sqlite에 저장되어있는 값이 넘어가서 띄어주어야 하는데 계속 에러가나네요...

package com.example.sinyoung.scheduler;

import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Date;

/**
 * Created by SinYoung on 2017-05-28.
 */

public class javaScheduleUptate extends ActionBarActivity {

    private DBHelper helper;
    int id=0;
    TextView Title;
    TextView Content;
    TextView Time;
    TextView Alarm;
    TextView Date;

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

        Date = (TextView) findViewById(R.id.editUpdateDate);
        Title = (TextView) findViewById(R.id.editUpdateTitle);
        Content = (TextView) findViewById(R.id.editUpdateContent1);
        Time = (TextView)findViewById(R.id.editUpdateTime1);
        Alarm = (TextView) findViewById(R.id.editUpdateAlarm);

        helper = new DBHelper(this);
        
        /* 여기 주석 부분이 값을 넣어 주는 부분인데 있으면 ui도 안뜨고 에러가 나요
        Bundle extras = getIntent().getExtras();
        if(extras != null){
            int Value = extras.getInt("id");
            if (Value > 0){

                Cursor cursor = helper.getData(Value);
                id = Value;
                cursor.moveToFirst();

                String date = cursor.getString(cursor.getColumnIndex(DBHelper.SCHEDULE_DATE));
                String title = cursor.getString(cursor.getColumnIndex(DBHelper.SCHEDULE_TITLE));
                String content = cursor.getString(cursor.getColumnIndex(DBHelper.SCHEDULE_CONTENT));
                String time = cursor.getString(cursor.getColumnIndex(DBHelper.SCHEDULE_TIME));
                String alarm = cursor.getString(cursor.getColumnIndex(DBHelper.SCHEDULE_ALARM));

                if (!cursor.isClosed()){
                    cursor.close();
                }

                Date .setText((CharSequence) date);
                Title.setText((CharSequence) title);
                Content.setText((CharSequence) content);
                Time.setText((CharSequence) time);
                Alarm.setText((CharSequence) alarm);
            }
        }*/
    }

    public void delete(View view) {
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            int Value = extras.getInt("id");
            if (Value > 0) {
                helper.delete(id);
                Toast.makeText(getApplicationContext(), "삭제되었음", Toast.LENGTH_SHORT).show();
                finish();
            } else {
                Toast.makeText(getApplicationContext(), "삭제되지 않았음", Toast.LENGTH_SHORT).show();
            }
        }
    }

    public void edit(View view) {
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            int value = extras.getInt("id");
            if (value > 0) {
                if (helper.update(id, Date.getText().toString(), Title.getText().toString(), Content.getText().toString(), Time.getText().toString(), Alarm.getText().toString())) {
                    Toast.makeText(getApplicationContext(), "수정되었음", Toast.LENGTH_SHORT).show();
                    finish();
                } else {
                    Toast.makeText(getApplicationContext(), "수정되지 않았음", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
    public void onButtonCreateActivity(View v){
        finish();
    }
}

위 소스 UI

 

어떤 점이 문제일까요......

 

소지 (120 포인트) 님이 2017년 5월 29일 질문

답변 달기

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