기존
리사이클러뷰 어댑터와 리스트를 연결하기 위해서 액티비티에서 ArrayList<> aList = new ArrayList<>(); 선언후
어댑터에서는 생성자에서 List 를 받은후 this.aList = aList; 로 해주었다
액티비티에서 자료를 받은 후 aList.add()-> adapter.notifyDataSetChanged()으로 하면 데이터가 연결 된다
어댑터 쪽에서 인식을 못한다 (카운트:0)
문제
하지만 API 로 통신 한후 Gson을 통해 배열로 받아와서 List 에 넣기 위해
DTO[] array = gson.fromJson(list, DTO[].class);
dtos = new ArrayList<DTO>(Arrays.asList(array));
이렇게 해서 adapter.notifyDataSetChanged() 을 하면 리스트 바인딩이 안된다.
해결
Arrays.asList로 바로 어레이리스트를 만들면 add 한것과 다르게 작동을 하는것같다
(아니 심지어 asList 를 하고 객체를 생으로 만들어서 DTOS ArrayList에 add 를 해도 안먹힌다 ;;)
그리고 add 뿐만 아니라 clear 도 안되고 remove 도 안된다 (에러발생)
그래서 리스트를 어댑터에 넘겨서 직접 알려줘야한다
adapter에
public void setData(ArrayList<DTO> dtos) {
this.dtos = dtos;
notifyDataSetChanged();
}
함수를 만들어서 액티비티에서
adapter.setData(dtos);
를 호출해서 직접 알려주면 된다.
'Android' 카테고리의 다른 글
BottomNavigationView 아이콘 사이즈 수정법 (태블릿 대응) (0) | 2018.10.19 |
---|---|
Rxjava + MVVM + databinding (0) | 2018.08.21 |
BLE 통신 개념 + 통신 과정 + Notification 설정 (9) | 2018.06.21 |
GridLayoutManager + Spacing (0) | 2017.11.20 |
두번 누르면 종료 (0) | 2017.11.20 |