이번 시간에는 Room을 이용해서 DB에 데이터 등록하는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.05.14 - [안드로이드] - [안드로이드] Database Room 사용법 part1 - Room 설정
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.google.android.material:material:1.6.0'
( res -> value -> themes)
<style name="Theme.DBRoom" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity
액티비티명: InsertUserActivity
- 설명 -
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>
- 설명 -
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();
}
}
- 설명 -
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
- 설명 -
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 - 간단한 요청 및 응답
2022.04.29 - [안드로이드] - [안드로이드] LineChart 만드는 방법 part1 - 기본 구현
2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성
[안드로이드] Database Room 사용법 part4 - 수정 (0) | 2022.05.17 |
---|---|
[안드로이드] Database Room 사용법 part3 - 리스트 (0) | 2022.05.16 |
[안드로이드] Database Room 사용법 part1 - Room 설정 (1) | 2022.05.14 |
[안드로이드] LiveData 만드는 방법 part2 - 레이아웃에 ViewModel 직접 적용 (0) | 2022.05.13 |
[안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경 (0) | 2022.05.12 |
댓글 영역