diaconu andrei list view vs recyclerview in android l
DESCRIPTION
CodeCampIasi25Oct2014TRANSCRIPT
![Page 1: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/1.jpg)
![Page 2: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/2.jpg)
Despre mine
• Diaconu Andrei
• Developer din 2007
• Pasionat de tehnologie
![Page 3: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/3.jpg)
Android?
![Page 4: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/4.jpg)
Cine a folosit ListView?
![Page 5: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/5.jpg)
![Page 6: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/6.jpg)
![Page 7: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/7.jpg)
RecyclerView?
![Page 8: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/8.jpg)
RecyclerViewCardViewElevation
Activity TransitionsRipplePalette
Tint
Android Lollipop
![Page 9: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/9.jpg)
![Page 10: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/10.jpg)
Runda 1: Layout
![Page 11: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/11.jpg)
ListView RecyclerView
![Page 12: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/12.jpg)
Adaptor
RecyclerViewListView
![Page 13: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/13.jpg)
GridView
Adaptor
RecyclerView
![Page 14: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/14.jpg)
ListView RecyclerView
![Page 15: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/15.jpg)
RecyclerView
Adaptor+
ViewHolder
Layout Manager
ListView
![Page 16: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/16.jpg)
![Page 17: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/17.jpg)
Runda 2: Item Click
![Page 18: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/18.jpg)
setOnItemClickListener
RecyclerViewListView
![Page 19: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/19.jpg)
listview.setOnItemClickListener( onItemClick(list, view, position, id))
RecyclerViewListView
![Page 20: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/20.jpg)
Click Listener pe fiecare View
RecyclerViewListView
![Page 21: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/21.jpg)
Adaptor{ onBindViewHolder(viewHolder, position) { viewHolder.card.setOnClickListener( onClick(view) ); }}
RecyclerViewListView
![Page 22: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/22.jpg)
Adaptor{ onBindViewHolder(…, final position) { viewHolder.card.setOnClickListener( onClick(view) ); }}
RecyclerViewListView
![Page 23: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/23.jpg)
Daca sterg un view?
RecyclerViewListView
![Page 24: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/24.jpg)
Adaptor{ onBindViewHolder(viewHolder, position) { viewHolder.card.setOnClickListener( onClick(view){ int pos = recycler.getChildPosition(view);
} ); }}
RecyclerViewListView
![Page 25: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/25.jpg)
Adaptor cuplat cu recycler
RecyclerViewListView
![Page 26: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/26.jpg)
Adaptor
![Page 27: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/27.jpg)
Adaptor{ onCreateViewHolder(…) { viewHolder.card.setOnClickListener(extern); }}
RecyclerViewListView
![Page 28: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/28.jpg)
![Page 29: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/29.jpg)
Runda 3: Animatii
![Page 30: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/30.jpg)
Ce trebuie facut?
RecyclerViewListView
![Page 31: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/31.jpg)
ValueAnimator
RecyclerViewListView
![Page 32: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/32.jpg)
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
![Page 33: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/33.jpg)
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
![Page 34: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/34.jpg)
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
![Page 35: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/35.jpg)
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
![Page 36: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/36.jpg)
Transient State
RecyclerViewListView
![Page 37: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/37.jpg)
Notificam adaptorul
RecyclerViewListView
![Page 38: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/38.jpg)
Mutare?Adaugare?
Animatii multiple?
RecyclerViewListView
![Page 39: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/39.jpg)
RecyclerViewListView
ItemAnimator
![Page 40: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/40.jpg)
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
![Page 41: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/41.jpg)
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
![Page 42: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/42.jpg)
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
![Page 43: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/43.jpg)
RecyclerViewListView
Adaptor mai granulat
![Page 44: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/44.jpg)
RecyclerViewListView
AdaugareMutare
Animatii multiple
![Page 45: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/45.jpg)
![Page 46: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/46.jpg)
Runda 4: Header
![Page 47: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/47.jpg)
Header
Footer
![Page 48: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/48.jpg)
list.addHeaderView
RecyclerViewListView
![Page 49: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/49.jpg)
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
![Page 50: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/50.jpg)
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
![Page 51: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/51.jpg)
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
![Page 52: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/52.jpg)
if (p == 0) return header;else
return adaptor.get(p-1)
RecyclerViewListView
![Page 53: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/53.jpg)
![Page 54: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/54.jpg)
Runda 5 - Updates
![Page 55: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/55.jpg)
update la telefon
RecyclerViewListView
![Page 56: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/56.jpg)
update la sdk
RecyclerViewListView
![Page 57: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/57.jpg)
![Page 58: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/58.jpg)
![Page 59: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/59.jpg)
Cum migram?
![Page 60: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/60.jpg)
Echivalentul ListView
RecyclerView recycler = findViewById();
recycler.setLayoutManager( new LinearLayoutManager(VERTICAL, false));
recycler.setAdapter(new MyAdapter(data));
![Page 61: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/61.jpg)
Echivalentul BaseAdapter
MyAdapter { onCreateViewHolder(parent, viewType) { View v = inflate layout; ViewHolder vh = new ViewHolder(v); return vh; }
onBindViewHolder(viewHolder, position) { DataItem user = data.get(position); viewHolder.text.setText(user.name); }}
![Page 62: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/62.jpg)
• ListView itemClick vs click listener clasic
![Page 63: Diaconu andrei list view vs recyclerview in android l](https://reader033.vdocuments.net/reader033/viewer/2022052400/559363bc1a28aba3478b4792/html5/thumbnails/63.jpg)
• ListView headers vs headere proprii