1. 댓글 목록 ListView height 조절

- ScrollView 안에 모든 요소를 넣고 그 중에서 ListView가 있는 구조인데 ListView만 스크롤이 되고 전체 ScrollView는 스크롤이 되지 않는 상태였음

- ListView의 각 item들의 높이를 지정하는 코드를 적용하여 현재는 전체 ScrollView가 스크롤되도록 수정함

- 주의할 점은 firebase DB에서 데이터를 다 읽어온 다음에 height 계산을 해야 제대로 적용된다는 점!!

- https://hayarain.tistory.com/7 해당 포스팅을 참고함

private static void listViewHeightSet(BaseAdapter listAdapter, ListView listView){
    int totalHeight = 0;
    for (int i = 0; i < listAdapter.getCount(); i++){
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }
 
    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}

 

2. 데이터 추가/삭제 후 기존 데이터가 중복 출력되는 문제 해결

- firebase의 DB에서 데이터를 가져오는데 데이터가 변경되고 난 후에 기존 데이터가 중복 출력되는 문제가 있었음

- 데이터가 변경되면 adapter의 ArrayList를 clear()로 비운 다음에 다시 데이터를 받아오도록 해서 문제 해결

 

3. 댓글 작성 완료 시 키보드 내리기, 댓글창 비우기

- 댓글 등록 기능은 어제 구현했는데 등록되고 나서 키보드가 닫히지 않고 그대로 있었음

- https://sharp57dev.tistory.com/15 해당 포스팅을 보고 참고함

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);

EditText input = (EditText)findViewById(R.id.input)
imm.hideSoftInputFromWindow(input.getWindowToken(), 0);	//키보드 내리기

 

4. 댓글 삭제 기능 구현

- CommentAdapter.java에서 각 item의 삭제 버튼에 onClickListener을 추가함

- PostContent.java에서 댓글 삭제할지 다이얼로그를 띄운 후, 네 버튼이 클릭되면 firebase DB에서 삭제하도록 함

 

5. 게시글 최신순 정렬

- 기존에는 가장 오래된 게시글부터 출력되었는데 일반적인 게시판처럼 최신순으로 정렬해야겠다고 생각함

- PostAdapter.java에서 ArrayList에 item을 추가할 때 인덱스 0에 추가하도록 코드를 바꿈으로써 해결

    public void addItem(Post item) {
        //items.add(item);	//기존 코드
        items.add(0, item);
    }

 


 

 

ListView(댓글 영역)만 스크롤되는 것이 아니라 ScrollView 전체가 스크롤된 모습이다.

 

 

댓글을 등록하고 나서 키보드가 자동으로 닫히고

기존에 있던 댓글 데이터가 중복 출력되는 문제가 더이상 발생하지 않는 모습이다.

 

 

작성한 댓글의 삭제 버튼을 클릭하면 다이얼로그가 뜨고

댓글 삭제가 완료되면 바로 화면이 업데이트 된다.

 

 

그리고 가장 최근에 작성된 게시글이 게시글 목록 가장 상단에 있는 것을 확인할 수 있다.

 

이렇게 게시판 주요 기능은 구현을 마쳤다.

익명게시판의 경우 댓글이 없는 대신 공감 기능을 넣을 예정인데

아직 앱 자체에 로그인 기능을 구현하지 않아서 지금은 건드리기 애매한 부분이다.

따라서 게시판 기능은 여기서 마무리하고 나중에 로그인을 구현하고 나서 다시 다룰 예정이다.

+ Recent posts