반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 제목 그대로 RecyclerView.Adapter 에서 RecyclerView.ViewHolder holder 에 DataBinding을
적용하는 방법에 대해 알아보겠습니다.
먼저 item으로 사용될 xml이 있어야겠죠?
당연히 가장 바깥에는 <layout></layout> 태그로 감싸야하구요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="utf-8"?> <layout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/parent" android:layout_width="@dimen/length210" android:layout_height="@dimen/length378" android:layout_marginEnd="@dimen/length16" android:background="@drawable/list_playkitchen_01" android:orientation="horizontal"> ... ... </LinearLayout> </layout> | cs |
되셨다면 이번에는 RecyclerView.Adapter 클래스를 상속받는 커스텀Adapter를 보겠습니다.
RecyclerView.Adapter에 Databinding을 적용하려면 ViewHolder 클래스, onCreateViewHolder 함수, onBindViewHolder 함수 내부에 Binding 변수를 설정해 주어야 해요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | public class EduListAdapter extends RecyclerView.Adapter { private Vector<EduList> eduLists; private Activity activity; private Context context; public EduListAdapter(Vector<EduList> eduLists, Activity activity, Context context) { this.eduLists = eduLists; this.activity = activity; this.context = context; } @Override public int getItemCount() { return eduLists.size(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder holder; ItemJubangBinding binding; binding = ItemJubangBinding.inflate(LayoutInflater.from(context), parent, false); holder = new EduHolder(binding); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { try { EduHolder itemViewHolder = (EduHolder) holder; final ItemJubangBinding binding = itemViewHolder.binding; final int pos = position; binding.parentCard.setBackgroundResource(eduLists.get(position).getBackground()); } catch (Exception e) { e.printStackTrace(); } } private class EduHolder extends RecyclerView.ViewHolder { public ItemJubangBinding binding; EduHolder(ItemJubangBinding binding) { super(binding.getRoot()); this.binding = binding; } } } | cs |
위 코드에서 크기가 큰 코드들만 보시면 쉽게 적용하실 수 있을거에요.
참고로 저의 xml은 item_jubang.xml 입니다.
이상입니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 네이버 아이디 로그인 구현하기 android naver id login (0) | 2017.10.17 |
---|---|
안드로이드 페이스북 로그인 기능 구현하기 android app facebook login (0) | 2017.10.17 |
안드로이드 RecyclerView item 중복 터치 방지하는 방법 (0) | 2017.10.16 |
안드로이드 RecyclerView addOnItemTouchListener 에서 item position 구하기 (0) | 2017.10.16 |
안드로이드 RecyclerView CliptoPadding = false ( Margin or padding in last Child in RecyclerView ) (2) | 2017.10.13 |