상세 컨텐츠

본문 제목

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part4 - 수정

안드로이드

by aries574 2022. 3. 5. 13:55

본문


이번 시간에는 이전에 이어서 연락처

수정하는 방법을 알아보겠습니다. 

이전 포스팅을 먼저 보시고 오시면 됩니다.

2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회

앞으로 SQLite, RecyclerView를 통해서 연락처 만드는 방법을 알아보겠습니다. 내용이 많다 보니 조회, 등록, 수정, 삭제 별로 나눠 올리겠습니다. 이번에는 조회 부분입니다. 목차 1. 실행 화면 2. 연락

aries574.tistory.com

2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록

이번 시간에는 이전에 이어서 연락처 등록하는 방법을 알아보겠습니다. 이전 포스팅을 먼저 보고 오시면 됩니다. 2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 -

aries574.tistory.com

2022.03.04 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세

이번 시간에는 이전에 이어서 연락처 상세화면 만드는 방법을 알아보겠습니다. 이전 포스팅을 먼저 보시고 오시면 됩니다. 2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는

aries574.tistory.com


목차

1. 실행 화면
2. DB 클래스 수정 기능 구현
3. 연락처 상세화면 버튼 추가
4. 연락처 상세화면 기능 구현


1. 실행 화면


2. DB 클래스 수정 기능 구현

 - 설명 - 

 상세화면에서 넘어온 아이디, 이름, 전화번호를 이용해서

 해당 아이디에 관한 이름, 전화번호를 수정합니다.

PhoneBookDB.java

   /**
     * 연락처 수정
     * @param id 아이디
     * @param name 이름
     * @param phone_number 전화번호
     */
    public void updateData(String id, String name, String phone_number){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        //수정할 값
        cv.put(COLUMN_NAME, name);
        cv.put(COLUMN_PHONE_NUMBER, phone_number);

        long result = db.update(TABLE_NAME, cv, "_id=?", new String[]{id});

        if(result == -1){
            Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(context, "Successfully", Toast.LENGTH_SHORT).show();
        }
    }

 


3. 연락처 상세화면 버튼 추가

 - 추가 - 

 수정 버튼을 하나 추가합니다. 

activity_detail.xml

        <Button
            android:id="@+id/update_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="수정" />

 - 전체 코드 -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".DetailActivity">

    <androidx.constraintlayout.utils.widget.ImageFilterView
        android:id="@+id/update_image_view"
        android:layout_width="128dp"
        android:layout_height="128dp"
        android:scaleType="centerCrop"
        android:src="@drawable/photo"/>

    <EditText
        android:id="@+id/update_name_edit"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:hint="이름"
        android:inputType="text"/>

    <EditText
        android:id="@+id/update_phone_edit"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:maxLength="13"
        android:hint="전화번호"
        android:inputType="phone"/>


        <Button
            android:id="@+id/update_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="수정" />
</LinearLayout>

 

4. 연락처 상세화면 기능 구현

 - 추가 - 

 전화번호 하이픈 처리를 합니다. 

//전화번호 하이픈(-) 자동입력
updatePhoneEdit.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

 - 추가 -

 화면에 추가한 수정 버튼에 클릭이벤트를 만들어 수정 기능을 구현합니다. 

Button updateBtn = findViewById(R.id.update_btn);
updateBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        String name = updateNameEdit.getText().toString();
        String phoneNumber = updatePhoneEdit.getText().toString();

        PhoneBookDB db = new PhoneBookDB(DetailActivity.this);
        db.updateData(id, name, phoneNumber);
    }
});

 

- 전체 코드 - 

DetailActivity.java

public class DetailActivity extends AppCompatActivity {

    EditText updateNameEdit, updatePhoneEdit;

    ImageView updateImageView;

    String id, name, phoneNumber;

    byte[] image;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        updateNameEdit = findViewById(R.id.update_name_edit);
        updatePhoneEdit = findViewById(R.id.update_phone_edit);
        updateImageView = findViewById(R.id.update_image_view);

        //전화번호 하이픈(-) 자동입력
        updatePhoneEdit.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

        //데이터 가져와서 화면에 보여주기
        getAndSetIntentData();

        Button updateBtn = findViewById(R.id.update_btn);
        updateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String name = updateNameEdit.getText().toString();
                String phoneNumber = updatePhoneEdit.getText().toString();

                PhoneBookDB db = new PhoneBookDB(DetailActivity.this);
                db.updateData(id, name, phoneNumber);
            }
        });
    }

    public void getAndSetIntentData() {

        if(getIntent().hasExtra("id") && getIntent().hasExtra("name") &&
          getIntent().hasExtra("phone_number") && getIntent().hasExtra("image")){

            //데이터 가져오기
            id = getIntent().getStringExtra("id");
            name = getIntent().getStringExtra("name");
            phoneNumber = getIntent().getStringExtra("phone_number");
            image = getIntent().getByteArrayExtra("image");

            //데이터 넣기
            updateNameEdit.setText(name);
            updatePhoneEdit.setText(phoneNumber);

            Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);

            updateImageView.setImageBitmap(bitmap);
        }
    }
}

2022.03.01 - [안드로이드] - [안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법

 

[안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법

이번 시간에는 앱 실행 시에 앱에 관한 설명들을 페이지 형태로 넘겨가면서 보여주는 형태인 온보딩(Onboarding) 페이지 만드는 방법에 대하여 알아보겠습니다. 1. 실행 화면 2. 라이브러리 등록

aries574.tistory.com

2022.02.28 - [안드로이드] - [안드로이드] 알림(Alerter) 쉽게 만드는 방법

 

[안드로이드] 알림(Alerter) 쉽게 만드는 방법

이번 시간에는 알림(Alerter) 쉽게 만드는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실..

aries574.tistory.com

2022.02.27 - [안드로이드] - [안드로이드] 이미지(Image) 흐림 효과(Blur) 쉽게 주는 방법

 

[안드로이드] 이미지(Image) 흐림효과(Blur) 쉽게 주는 방법

이번 시간에는 이미지(Image) 흐림 효과(Blur)를 쉽게 주는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActi..

aries574.tistory.com

반응형

관련글 더보기

댓글 영역