채팅 구현할 때 채팅방에 있을 때 마지막으로 읽은 곳으로 리사이클러뷰 포커스를 맞춰주고 싶은데 어떻게 할까.. 하다가
onStop 될 때, 마지막 positon 쉐어드에 현재 있던 room번호를 key값으로 저장하고
해당 룸에 들어오면 방번호 저장한거로 onStart에 마지막 position 저장한거 불러와서
포커스 맞춰주기 했다. 생각보다 쉬웠는데 어떻게 구현해야 할 지, 삽질을 엄청헀당...
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
// 화면에 조금이라도 보이게되는 마지막 아이템의 포지션을 출력합니다.
lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();
int itemTotalCount = recyclerView.getAdapter().getItemCount() - 1;
if (lastVisibleItemPosition == itemTotalCount) {
Log.d(TAG, "onStoplastPosition...");
Log.d(TAG, "lastVisibleItemPosition : " + lastVisibleItemPosition);
Log.d(TAG, "litemTotalCount : " + itemTotalCount);
String lastVisibleItemPosition_st = Integer.toString(lastVisibleItemPosition); // String 값으로 변환
Log.d(TAG, "태그 lastVisibleItemPosition_st : " + lastVisibleItemPosition_st);
SharedPreferences sp = getSharedPreferences("LAST_Position", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString(roomNum, lastVisibleItemPosition_st);
editor.apply();
}
}
스크롤 관련 해본것들
int centerOfScreen = recyclerView.getWidth() / 2;
layoutManager.scrollToPositionWithOffset(lastVisibleItemPosition_if, centerOfScreen);
layoutManager.scrollToPositionWithOffset(lastVisibleItemPosition_if, chatList.size() - (chatList.size()-lastVisibleItemPosition));
layoutManager.smoothScrollToPosition(recyclerView, new RecyclerView.State(),lastVisibleItemPosition_if); // 처음부터 lastVisibleItemPosition_if 까지 부드럽게 내려감
layoutManager.smoothScrollToPosition(recyclerView, new RecyclerView.State(),recyclerView.getAdapter().getItemCount())
'Android[JAVA]' 카테고리의 다른 글
[Android][Java] 채팅목록에 새로운 메시지 업데이트 하기 (0) | 2021.09.08 |
---|---|
Non-static method 'show_notification(java.lang.String, java.lang.String, java.lang.String, java.lang.String)' cannot be referenced from a static context (0) | 2021.09.03 |
[Android][Java] 리사이클러뷰 스크롤 부드럽게 내리기 (0) | 2021.09.02 |
[Android][Java] StringBuilder (0) | 2021.08.16 |
JDBC 튜토리얼 (0) | 2021.08.16 |