반응형
binding : findbyid를 쉽고 간편하게 찾을 수 있고, 사용할 수 있다. 한번 사용하면 중독될지도 몰랏!;
우선 바인딩을 사용하는 방법부터 보여드릴 려고 한다.
package com.gohool.roomexample;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.gohool.roomexample.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding mbinding; //바인딩객체
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//바인딩 객체만들기
mbinding = ActivityMainBinding.inflate(getLayoutInflater());
View view = mbinding.getRoot();
setContentView(view);
}
}
메인 액티비티에 작성을 해주면 끝.
Room을 사용해 보기 위해 EditText, textView, button을 만들어주었다.
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.room:room-runtime:2.2.6' //룸
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
annotationProcessor 'androidx.room:room-compiler:2.2.6' //룸
}
그래들에 추가 해준다.
package com.gohool.roomexample;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
//모델
@Entity
public class ToDO {
@PrimaryKey(autoGenerate = true) //기본키 / 알아서증가
private int id;
private String title;
public ToDO(String title) { //생성자 : constructor
this.title = title;
}
public int getId() { // getter and setter
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override //내용 확인을 위해
public String toString() {
return "ToDO{" +
"id=" + id +
", title='" + title + '\'' +
'}';
}
}
내가 사용할 개체들을 만들어준다.
이시간에는 text을 받아서 setText만 할것이기 때문에 title하나만 받았다.
package com.gohool.roomexample;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
//todo에 대한 어떤 동작을 제공할지 제공
@Dao
public interface ToDODao {
@Query("SELECT * FROM ToDO") //todo의 모든 내용 가져옴
List<ToDO> getALL();
@Insert
void insert(ToDO toDO); //삽입
@Update
void update(ToDO toDO); //업데이트
@Delete
void delete(ToDO toDO); //삭제
}
전부 가져오거나, 삽입, 업데이트 삭제를 위한.
package com.gohool.roomexample;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {ToDO.class}, version = 1)
public abstract class Appdatabase extends RoomDatabase { //데이터베이스 객체
public abstract ToDODao toDODao(); //toDO를 조작
}
사용하고 픈 클래스가 있다면, {toDo.class , 클래스추가} 해줄 수 있다.
package com.gohool.roomexample;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import com.gohool.roomexample.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding mbinding; //바인딩객체
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//바인딩 객체만들기
mbinding = ActivityMainBinding.inflate(getLayoutInflater());
View view = mbinding.getRoot();
setContentView(view);
// 데이터 베이스 객체 만들기 / final 쓰는 이유 : 상수, 절대 변하지않는 값
final Appdatabase db = Room.databaseBuilder(this, Appdatabase.class, "todo-db")
.allowMainThreadQueries() //메인 쓰레드에서도 db조작을 해도 됨
.build();
//바인딩을 사용한 button(id)을 바로 불러와서 listener 메소드를 사용할 수 있다.
mbinding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db.toDODao().insert(new ToDO(mbinding.ToDoList.getText().toString())); //editText에 삽입 후 버튼을 누르면
mbinding.textView.setText(db.toDODao().getALL().toString()); //textView에 불러옴
}
});
}
}
반응형
'개발언어 > JAVA' 카테고리의 다른 글
안드로이드 골뱅이 쓰는이유 (0) | 2021.01.13 |
---|---|
안드로이드 getinstance() 란? (0) | 2021.01.13 |
Room이란? (0) | 2021.01.07 |
안드로이드 TODOLIST 만들기 (feat. SQL OpenHelper) (0) | 2021.01.05 |
안드로이드 상단 분리된 메뉴 (0) | 2021.01.01 |