상세 컨텐츠

본문 제목

[안드로이드] Database Room 사용법 part2 - 데이터 등록

안드로이드

by aries574 2022. 5. 15. 12:17

본문


이번 시간에는 Room을 이용해서 DB에 데이터 등록하는 방법을 알아보겠습니다. 

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.05.14 - [안드로이드] - [안드로이드] Database Room 사용법 part1 - Room 설정

 

[안드로이드] Database Room 사용법 part1 - Room 설정

Room 사용법을 알아보겠습니다. 앱 내부에 데이터를 관리하는 기능을 도와주는 라이브러리입니다. SQLite보다 쉽게 사용할 수 있습니다. 자세한 내용은 아래 링크를 가시면 보실 수 있습니다. https:

aries574.tistory.com


목차

1. 실행 화면
2. 라이브러리 등록
3. 테마 변경 themes.xml
4. 등록 화면 만들기 InsertUserActivity
5. 메인 화면 구성 activity_main.xml
6. 메인 코드 구현 MainActivity.java


1. 실행 화면


2. 라이브러리 등록

build.gradle(Module:프로젝트명:app)

dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.

implementation 'com.google.android.material:material:1.6.0'

 

3. 테마 변경 themes.xml

( res -> value -> themes)

 <style name="Theme.DBRoom" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

 


4. 등록화면 만들기 InsertUserActivity

app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity

 액티비티명: InsertUserActivity

activity_insert_user.xml

 - 설명 - 

 1. 이름과 나이 입력을 위한 EditText

 2. 데이터 저장을 하기 위한 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".InsertUserActivity">

    <EditText
        android:id="@+id/name_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="이름"
        android:inputType="text" />

    <EditText
        android:id="@+id/age_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name_edit"
        android:hint="나이"
        android:inputType="number" />

    <Button
        android:id="@+id/save_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/age_edit"
        android:layout_centerHorizontal="true"
        android:text="저장" />

</RelativeLayout>

 

InsertUserActivity

 - 설명 - 

 1. 이름과 나이 변수에 넣는다.

 2. 입력한 정보를 insertuser()에 넘겨줌

 3. DB 생성해서 입력한 정보 등록

public class InsertUserActivity extends AppCompatActivity {

    EditText nameEdit, ageEdit;

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

        nameEdit = findViewById(R.id.name_edit);
        ageEdit = findViewById(R.id.age_edit);
        Button insertBtn = findViewById(R.id.save_btn);

        insertBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String sName = nameEdit.getText().toString();
                String sAge = ageEdit.getText().toString();

                //사용자 등록
                insertUser(sName, sAge);
            }
        });
    }

    /**
     * 사용자 등록
     * @param name 이름
     * @param age 나이
     */
    private void insertUser(String name, String age){

        User user = new User();
        user.userName = name;
        user.userAge = age;

        AppDatabase db = AppDatabase.getDBInstance(this.getApplicationContext());
        db.userDao().insertUser(user);

        setResult(Activity.RESULT_OK);

        finish();
    }
}


5. 메인 화면 구성 activity_main.xml

 - 설명 - 

 1. 사용자 리스트를 보여주기 위한 RecyclerView

 2. 사용자등록 화면으로 넘어가기 위한 FloatingActionButton

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/insert_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="20dp"
        android:backgroundTint="@android:color/holo_green_dark"
        app:tint="@android:color/white"
        app:srcCompat="@drawable/ic_add" />
</RelativeLayout>

 아이콘 res -> drawable

ic_add.xml
0.00MB


6. 메인 코드 구현 MainActivity.java

 - 설명 - 

 1. loadUserList() 사용자 정보 조회 구현

 2. activityResult 사용자 등록 후 전달받은

   데이터에 의해사용자 조회 기능 구현

public class MainActivity extends AppCompatActivity {

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

        FloatingActionButton fab = findViewById(R.id.insertBtn);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(MainActivity.this, InsertUserActivity.class);
                activityResult.launch(intent);
            }
        });

        //사용자 조회
        loadUserList();
    }

    ActivityResultLauncher<Intent> activityResult = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {

                    if(result.getResultCode() == RESULT_OK){

                        //사용자 조회
                        loadUserList();
                    }
                }
            }
    );

    //사용자 조회
    private void loadUserList() {

        AppDatabase db = AppDatabase.getDBInstance(this.getApplicationContext());

        List<User> userList = db.userDao().getAllUser();

        if(userList.size() > 0){

            int position = userList.size() -1;

            Toast.makeText(this, "최근 등록자: " + userList.get(position).userName
                    , Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "No Data", Toast.LENGTH_SHORT).show();
        }
    }
}

2022.05.07 - [안드로이드] - [안드로이드] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답

 

[안드로이드] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답

이번 시간에는 HTTP통신을 쉽게 도와주는 Volley 라이브러리를 이용해서 API 호출,  데이터를 가져오는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 권한 등록 3. 라이브러리 등록 4. 메인

aries574.tistory.com

2022.04.29 - [안드로이드] - [안드로이드] LineChart 만드는 방법 part1 - 기본 구현

 

[안드로이드] LineChart 만드는 방법 part1 - 기본 구현

이번 시간에는 LineChart를 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실행 화면 2. 라이브러리 등록..

aries574.tistory.com

2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성

 

[안드로이드] Tab Custom Animation part1 - 화면 구성

이번 시간부터 TabLayout을 직접 만들어 애니메이션까지 넣어보는 방법을 알아보겠습니다. 이번 포스팅은 화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 테마 변경 3. 배경 색상 파일 만들기(drawab

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역