이번 시간에는 이전에 이어서 연락처
수정하는 방법을 알아보겠습니다.
이전 포스팅을 먼저 보시고 오시면 됩니다.
2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회
2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록
2022.03.04 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세
- 설명 -
상세화면에서 넘어온 아이디, 이름, 전화번호를 이용해서
해당 아이디에 관한 이름, 전화번호를 수정합니다.
/**
* 연락처 수정
* @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();
}
}
- 추가 -
수정 버튼을 하나 추가합니다.
<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>
- 추가 -
전화번호 하이픈 처리를 합니다.
//전화번호 하이픈(-) 자동입력
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);
}
});
- 전체 코드 -
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) 페이지 쉽게 만드는 방법
2022.02.28 - [안드로이드] - [안드로이드] 알림(Alerter) 쉽게 만드는 방법
2022.02.27 - [안드로이드] - [안드로이드] 이미지(Image) 흐림 효과(Blur) 쉽게 주는 방법
[안드로이드] 버튼이 보라색으로 고정된 상황 쉽게 해결하는 방법 (0) | 2022.03.07 |
---|---|
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part5 - 삭제 (0) | 2022.03.06 |
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세 (0) | 2022.03.04 |
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록 (0) | 2022.03.03 |
[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회 (2) | 2022.03.02 |
댓글 영역