상세 컨텐츠

본문 제목

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

안드로이드

by aries574 2022. 3. 4. 15:50

본문


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

상세화면 만드는 방법을 알아보겠습니다.

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

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


목차

1. 실행 화면
2. 연락처 상세 화면(Activity) 만들기
2-1 activity_detail.xml
2-2 DetailActivity.java
3. 연락처 등록 기능 수정
4. 연락처 어뎁터 수정 (클릭이벤트)
5. 설정 파일 수정


1. 실행 화면

 

2. 연락처 상세 화면(Activity) 만들기

app -> 마우스 오른쪽 -> New -> Activity -> Empty Activity

 Activity Name: DetailActivity

2-1 activity_detail.xml

 - 설명 - 

 1. 메인화면에서 데이터를 받아서 보여주는 화면입니다.

 2. 이미지 뷰, 에디트 텍스트로 구성되어있습니다. 

<?xml version="1.0" encoding="utf-8"?>
<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:gravity="center"
    android:orientation="vertical"
    tools:context=".DetailActivity">

    <ImageView
        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:hint="전화번호"
        android:inputType="phone" />

</LinearLayout>

 

2-2 DetailActivity.java

 - 설명 - 

 1. getAndSetIntentData: 연락처 어뎁터를 통해 전달받은 데이터를 화면에 보여줍니다. 

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); //사진

        getAndSetIntentData();
    }


    /**
     * 데이터 가져와서 화면에 보여주기
     */
    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);
        }
    }
}

 

 

3. 연락처 등록 기능 수정 AddActivity.java

 - 설명 - 

 1. 이미지를 전달하는 과정에서 이미지 크기로 인한 오류로 인해서

 사이즈 조절하는 코드를 추가했습니다. 

/**
     * 이미지 바이트로 변환
     * @param image 이미지
     * @return
     */
    public static byte[] imageViewToByte(ImageView image){

        Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();

        //사이즈 조절
        Bitmap resize = Bitmap.createScaledBitmap(bitmap, 300, 400, true);

        ByteArrayOutputStream stream = new ByteArrayOutputStream();

        //압축
        resize.compress(Bitmap.CompressFormat.JPEG, 100, stream);

        byte[] byteArray = stream.toByteArray();

        return byteArray;
    }

 

4. 연락처 어뎁터 수정 (클릭이벤트)

 - 설명 - 

 1. 리스트화면에서 해당 아이템을 클릭하면 상세화면으로 이동하는

 코드를 추가했습니다. 

@Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        PhoneBook phone = phoneList.get(position);

        holder.id_text.setText(phone.getPhone_id()); //아이디
        holder.name_text.setText(phone.getPhone_name());//이름

        byte[] phoneImage = phone.getUser_image();
        Bitmap bitmap = BitmapFactory.decodeByteArray(phoneImage, 0, phoneImage.length);
        holder.imageView.setImageBitmap(bitmap);

        //상세화면 이동
        holder.mainLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, DetailActivity.class);
                intent.putExtra("id",           phone.getPhone_id());
                intent.putExtra("name",         phone.getPhone_name());
                intent.putExtra("phone_number", phone.getPhone_number());
                intent.putExtra("image",        phoneImage);
                context.startActivity(intent);
            }
        });
    }

 

5. 설정 파일 수정

 - 설명 - 

 1. 상세화면에서 뒤로 가기 버튼을 누르면 메인화면으로 가는 코드입니다. 

<activity
            android:name=".DetailActivity"
            android:exported="false"
            android:parentActivityName=".MainActivity"
            />

 

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

반응형

관련글 더보기

댓글 영역