반응형

binding : findbyid를 쉽고 간편하게 찾을 수 있고, 사용할 수 있다. 한번 사용하면 중독될지도 몰랏!;

 

 

우선 바인딩을 사용하는 방법부터 보여드릴 려고 한다.

위의 글씨 밑에 있는 viewBinding 작성

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' //룸
}

그래들에 추가 해준다.

룸을 사용하기 위한 클래스 3개

 

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에 불러옴
            }
        });





    }
}

반응형

+ Recent posts