1. 게시판 Fragment화

앱에는 자유게시판과 익명게시판, 2개의 게시판이 존재한다.

 

그런데 기존 코드는 자유게시판/익명게시판 버튼을 터치할 때마다

새로운 Intent를 만들어 페이지 이동을 해서 Intent가 스택처럼 계속 쌓여나갔다.

 

이 점이 비효율적이라고 생각해서 Intent 대신 Fragment를 이용해서

한 Intent에서 자유게시판/익명게시판 Fragment를 호출하여 각 게시판을 이동할 수 있도록 수정했다.

 

 

Firebase DB와 연결하지 않아 실제 게시물 내용이 반영되진 않았지만,

각 게시판에 따라 서로 다른 RecyclerView 내용이 출력되는 것은 확인했다.

 

 

2. 게시글 작성 기능 구현 (DB 데이터 추가)

Firebase DB에 작성한 게시글 데이터를 등록하는 기능을 구현했다.

일기장 기능을 구현하면서 DB에 데이터 추가하는 코드는 작성했었기 때문에

게시글도 그와 유사하게 코드를 작성했다.

 

3. 게시글 조회 기능 구현 (DB 데이터 조회)

DB에서 데이터를 조회하면서 고민할 부분이 2가지가 있었다.

 

첫번째는 Firebase DB가 트리 구조이기 때문에

전체 일기 데이터를 어떻게 불러올 수 있는지 고민되어 찾아보았다.

구글링 한 결과 다음과 같은 코드를 작성했다.

 

freeBoardRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                    for(DataSnapshot dateSnap: dataSnapshot.getChildren()){
                        for(DataSnapshot snap: dateSnap.getChildren()){
                            Post value = snap.getValue(Post.class);
                            adapter.addItem(new Post(value.title, value.content, value.writer, value.writeDate));
                        }
                    }
            }
            ...
}

 

Firebase Reference에 ValueEventListener을 추가하는데 이때 onDataChange 메소드를 작성했었다.

여기에서 파라미터로 DataSnapshot을 가지는데, for Each문을 중첩해서 사용함으로써

트리 안쪽에 있는 데이터까지 접근할 수 있었다.

 

두번째로 고민된 것은, 자유/익명게시판을 Fragment로 구현해서 그런지

view를 return하는 것보다 DB에서 데이터를 가져오는 것이 더 나중에 실행되는 것이었다.

 

https://t-okk.tistory.com/12

구글링하다가 찾은 위의 포스팅을 참고하여 구현했다.

 

결과적으로 PostAdapter.java에 작성했었던 setItems와,

public void setItems(ArrayList<Post> items){
        this.items = items;
    }

 

포스팅에서 참고한 adapter.notifyDataSetChanged(); 를 이용했다.

 

+ Recent posts