마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

room 데이터베이스랑 GridView 연동 질문

0 추천

앱 종료시에도 그리드뷰 데이터가 저장될 수 있도록 room을 이용해서 저장하고 하고 싶습니다. 

그런데 아직 초보라 잘 안되네요 도와주세요

mainActivity.java

public class MainActivity extends AppCompatActivity {

        GridView myGrid;
        Button btn_add;
        Button btn_del;

        int count;
        TextView list_form_txt;
        ArrayList<String> arr;

        MyAdapter adapter = null;


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

            final AppDatabase db = Room.databaseBuilder(this, AppDatabase.class, "todo_db").allowMainThreadQueries().build(); //데이터 베이스 객체

            arr = new ArrayList<String>();


            myGrid = findViewById(R.id.myList);

            list_form_txt = findViewById(R.id.mmm);
            btn_add = findViewById(R.id.btn_add);
            btn_del = findViewById(R.id.btn_del);
            count = 0;

            //어댑터 생성
            adapter = new MyAdapter(MainActivity.this, R.layout.list_form, arr, myGrid);
            myGrid.setAdapter(adapter);
            //그리드 뷰에 어댑터를 추가

            restoreState();

            btn_add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    count = adapter.getCount();
                    arr.add(Integer.toString(count + 1));

                    adapter.notifyDataSetChanged();
                }
            });

        }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        restoreState();
    }

    @Override
    protected void onStop() {
        super.onStop();
        save();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        save();
    }

    protected void restoreState(){

    }

    protected void save(){
        final AppDatabase db = Room.databaseBuilder(this, AppDatabase.class, "todo_db")
                .allowMainThreadQueries().build(); //데이터 베이스 객체
        db.todoDao().insert(new todo(myGrid.getAdapter().toString()));
        db.todoDao().getAll().toString();


    }
}

todo

@Entity
public class todo {

    @PrimaryKey(autoGenerate = true)
    private int id;
    private String title;

    public todo(String title) {
        this.title = title;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }}

todoDao 

@Dao
public interface todoDao {
    @Query("SELECT * FROM todo")
    List<todo> getAll();
    @Insert
    void insert(todo todo);
    @Update
    void update(todo todo);
    @Delete
    void delete(todo todo);
}

 

 

혜둉이 (200 포인트) 님이 2020년 11월 10일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...