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

recyclerview 아이템 추가 질문입니다.

0 추천

async 사용해서 아이템 추가 하고 있습니다.

Adapter.notifyItemRangeInserted(Integer.parseInt(startCount), dList.length());
recyclerView.setAdapter(Adapter);

 

이렇게 추가된 아이템 만 어뎁터에 넣어주는 중인데요

추가된 위치 부터 리스트가 나와야하는데 처음으로 돌아갑니다.

listview 는 setSelction 사용해서 했었는데.... 이게 좀 위치가 아이템단위로 끊어져서 나오긴 했지만..

무슨 방법 사용해야 할까요

status (1,410 포인트) 님이 2017년 1월 25일 질문

3개의 답변

0 추천
 
채택된 답변

notifyItemRangeInserted(int, int)

메소드 설명은 아래와 같습니다. 

Notify any registered observers that the currently reflected itemCount items starting at positionStart have been newly inserted. The items previously located at positionStart and beyond can now be found starting at position positionStart + itemCount

몇번째 순서부터 몇개의 아이템이 추가되었으니 해당 부분을 화면에 노출하고 있으면 새로고침하여 다시 보여주세요. 라는 의미로 볼수 있죠. 

따라서 setAdapter 다시 하시면 안됩니다.

아이템 추가 후 추가된 아이템 정보가 노출이 안된다면 

아이템 추가 후에 아답터의 notifyDataSetChanged() 함수를 호출하시면 화면이 새롭게 변경되실겁니다.

그리고 아이템 추가를 원하시면 아답터에 추가를 하시는게 아니라 아답터와 연결된 데이터 셋(ArrayList, LIst, Map 등)에 아이템을 추가하시고 아답터에 아이템이 추가된것을 알려주셔야 합니다. 

http://aroundck.tistory.com/2974 블로그 글을 참고해 보세요.

 

익명사용자 님이 2017년 1월 25일 답변
status님이 2017년 1월 26일 채택됨
어댑터는 Adapter = new DiaryGridAdapter(diaryList, getContext()); 를 사용하여 생성해주고 diaryList 에 아이템은 추가해주고 있었지요 ㅎㅎ 처음 start에서 setAdapter 를 사용하면 아이템이 노출이 안되어서,,,, 플래그를 달아서 처음 데이터 가져올때만 setAdapter 하는 식으로 해결 하였습니다.
0 추천
아답터에 아이템 추가하고 리사이클러뷰에 넣는 과정에서

아답터를 계속 새로 초기화하는거 같은데요

if(Adapter==null){

Adapter = new ....

} 이런식으로 null일때만 초기화해보세요
익명사용자 님이 2017년 1월 25일 답변
0 추천

setSelection 기능이랑 똑같은 역할하는거 찾으시는건가요?

 

mRecyclerView.scrollToPosition(position);

위처럼 해보세용,.

Development Guy (70,570 포인트) 님이 2017년 1월 25일 답변
해보았는데 이방법이랑은 조금 다른 방법이었네요! 감사합니다. ㅎㅎ
...