Diaconu andrei list view vs recyclerview in android l

63

description

CodeCampIasi25Oct2014

Transcript of Diaconu andrei list view vs recyclerview in android l

Page 1: Diaconu andrei   list view vs recyclerview in android l
Page 2: Diaconu andrei   list view vs recyclerview in android l

Despre mine

• Diaconu Andrei

• Developer din 2007

• Pasionat de tehnologie

Page 3: Diaconu andrei   list view vs recyclerview in android l

Android?

Page 4: Diaconu andrei   list view vs recyclerview in android l

Cine a folosit ListView?

Page 5: Diaconu andrei   list view vs recyclerview in android l
Page 6: Diaconu andrei   list view vs recyclerview in android l
Page 7: Diaconu andrei   list view vs recyclerview in android l

RecyclerView?

Page 8: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewCardViewElevation

Activity TransitionsRipplePalette

Tint

Android Lollipop

Page 9: Diaconu andrei   list view vs recyclerview in android l
Page 10: Diaconu andrei   list view vs recyclerview in android l

Runda 1: Layout

Page 11: Diaconu andrei   list view vs recyclerview in android l

ListView RecyclerView

Page 12: Diaconu andrei   list view vs recyclerview in android l

Adaptor

RecyclerViewListView

Page 13: Diaconu andrei   list view vs recyclerview in android l

GridView

Adaptor

RecyclerView

Page 14: Diaconu andrei   list view vs recyclerview in android l

ListView RecyclerView

Page 15: Diaconu andrei   list view vs recyclerview in android l

RecyclerView

Adaptor+

ViewHolder

Layout Manager

ListView

Page 16: Diaconu andrei   list view vs recyclerview in android l
Page 17: Diaconu andrei   list view vs recyclerview in android l

Runda 2: Item Click

Page 18: Diaconu andrei   list view vs recyclerview in android l

setOnItemClickListener

RecyclerViewListView

Page 19: Diaconu andrei   list view vs recyclerview in android l

listview.setOnItemClickListener( onItemClick(list, view, position, id))

RecyclerViewListView

Page 20: Diaconu andrei   list view vs recyclerview in android l

Click Listener pe fiecare View

RecyclerViewListView

Page 21: Diaconu andrei   list view vs recyclerview in android l

Adaptor{ onBindViewHolder(viewHolder, position) { viewHolder.card.setOnClickListener( onClick(view) ); }}

RecyclerViewListView

Page 22: Diaconu andrei   list view vs recyclerview in android l

Adaptor{ onBindViewHolder(…, final position) { viewHolder.card.setOnClickListener( onClick(view) ); }}

RecyclerViewListView

Page 23: Diaconu andrei   list view vs recyclerview in android l

Daca sterg un view?

RecyclerViewListView

Page 24: Diaconu andrei   list view vs recyclerview in android l

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

Adaptor cuplat cu recycler

RecyclerViewListView

Page 26: Diaconu andrei   list view vs recyclerview in android l

Adaptor

Page 27: Diaconu andrei   list view vs recyclerview in android l

Adaptor{ onCreateViewHolder(…) { viewHolder.card.setOnClickListener(extern); }}

RecyclerViewListView

Page 28: Diaconu andrei   list view vs recyclerview in android l
Page 29: Diaconu andrei   list view vs recyclerview in android l

Runda 3: Animatii

Page 30: Diaconu andrei   list view vs recyclerview in android l

Ce trebuie facut?

RecyclerViewListView

Page 31: Diaconu andrei   list view vs recyclerview in android l

ValueAnimator

RecyclerViewListView

Page 32: Diaconu andrei   list view vs recyclerview in android l

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

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

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

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

Transient State

RecyclerViewListView

Page 37: Diaconu andrei   list view vs recyclerview in android l

Notificam adaptorul

RecyclerViewListView

Page 38: Diaconu andrei   list view vs recyclerview in android l

Mutare?Adaugare?

Animatii multiple?

RecyclerViewListView

Page 39: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

ItemAnimator

Page 40: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});

Page 41: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});

Page 42: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});

Page 43: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

Adaptor mai granulat

Page 44: Diaconu andrei   list view vs recyclerview in android l

RecyclerViewListView

AdaugareMutare

Animatii multiple

Page 45: Diaconu andrei   list view vs recyclerview in android l
Page 46: Diaconu andrei   list view vs recyclerview in android l

Runda 4: Header

Page 47: Diaconu andrei   list view vs recyclerview in android l

Header

Footer

Page 48: Diaconu andrei   list view vs recyclerview in android l

list.addHeaderView

RecyclerViewListView

Page 49: Diaconu andrei   list view vs recyclerview in android l

Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1

RecyclerViewListView

Page 50: Diaconu andrei   list view vs recyclerview in android l

Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1

RecyclerViewListView

Page 51: Diaconu andrei   list view vs recyclerview in android l

Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1

RecyclerViewListView

Page 52: Diaconu andrei   list view vs recyclerview in android l

if (p == 0) return header;else

return adaptor.get(p-1)

RecyclerViewListView

Page 53: Diaconu andrei   list view vs recyclerview in android l
Page 54: Diaconu andrei   list view vs recyclerview in android l

Runda 5 - Updates

Page 55: Diaconu andrei   list view vs recyclerview in android l

update la telefon

RecyclerViewListView

Page 56: Diaconu andrei   list view vs recyclerview in android l

update la sdk

RecyclerViewListView

Page 57: Diaconu andrei   list view vs recyclerview in android l
Page 58: Diaconu andrei   list view vs recyclerview in android l
Page 59: Diaconu andrei   list view vs recyclerview in android l

Cum migram?

Page 60: Diaconu andrei   list view vs recyclerview in android l

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

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

• ListView itemClick vs click listener clasic

Page 63: Diaconu andrei   list view vs recyclerview in android l

• ListView headers vs headere proprii