티스토리 뷰

ListView를 이용해서 채팅창을 만들어보고 있는 중입니다. 메세지가 도착하면 ListView의 Adapter에 메시지를 추가하고 notifyDataSetChanged()를 통해서 ListView를 갱신하는 코드를 작성하였으나 다음과 같이 동작하였습니다.

ListView를 클릭해야지 갱신됨

스택 오버플로어에서 검색결과 다음의 증상 때문에 적용이 안되던 것이였습니다. UI를 갱신하는 부분이라 UI Thread(Main Thread)에서 변경을 해주어야 했던겁니다.


1
Thread.currentThread()
cs


 Thread.currentThread()를 통해 현재 어떤 Thread가 해당 코드를 실행시키고 있는지 확인후 main Thread가 아니면 다음과 같이 main Thread로 해당 코드를 실행시켜 주시면 됩니다.


1
2
3
4
5
6
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        chatAdapter.notifyDataSetChanged();
    }
});
cs


 적용결과 ListView를 따로 클릭하지 않아도 갱신이 잘되는 것을 확인 할 수 있었습니다!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday