Diaconu andrei list view vs recyclerview in android l
-
Upload
codecampiasi -
Category
Technology
-
view
175 -
download
0
description
Transcript of Diaconu andrei list view vs recyclerview in android l
Despre mine
• Diaconu Andrei
• Developer din 2007
• Pasionat de tehnologie
Android?
Cine a folosit ListView?
RecyclerView?
RecyclerViewCardViewElevation
Activity TransitionsRipplePalette
Tint
Android Lollipop
Runda 1: Layout
ListView RecyclerView
Adaptor
RecyclerViewListView
GridView
Adaptor
RecyclerView
ListView RecyclerView
RecyclerView
Adaptor+
ViewHolder
Layout Manager
ListView
Runda 2: Item Click
setOnItemClickListener
RecyclerViewListView
listview.setOnItemClickListener( onItemClick(list, view, position, id))
RecyclerViewListView
Click Listener pe fiecare View
RecyclerViewListView
Adaptor{ onBindViewHolder(viewHolder, position) { viewHolder.card.setOnClickListener( onClick(view) ); }}
RecyclerViewListView
Adaptor{ onBindViewHolder(…, final position) { viewHolder.card.setOnClickListener( onClick(view) ); }}
RecyclerViewListView
Daca sterg un view?
RecyclerViewListView
Adaptor{ onBindViewHolder(viewHolder, position) { viewHolder.card.setOnClickListener( onClick(view){ int pos = recycler.getChildPosition(view);
} ); }}
RecyclerViewListView
Adaptor cuplat cu recycler
RecyclerViewListView
Adaptor
Adaptor{ onCreateViewHolder(…) { viewHolder.card.setOnClickListener(extern); }}
RecyclerViewListView
Runda 3: Animatii
Ce trebuie facut?
RecyclerViewListView
ValueAnimator
RecyclerViewListView
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
RecyclerViewListView
initialHeight = view.getHeight();ValueAnimator .ofFloat(1,0) .addUpdateListener( onAnimationUpdate(value) { view.height = initialHeight * value; view.requestLayout(); }) .start();
Transient State
RecyclerViewListView
Notificam adaptorul
RecyclerViewListView
Mutare?Adaugare?
Animatii multiple?
RecyclerViewListView
RecyclerViewListView
ItemAnimator
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
RecyclerViewListView
recycler.setItemAnimator( animateRemove(viewHolder) { viewHolder.card .animate() .scaleY(0) .start(); return false; }});
RecyclerViewListView
Adaptor mai granulat
RecyclerViewListView
AdaugareMutare
Animatii multiple
Runda 4: Header
Header
Footer
list.addHeaderView
RecyclerViewListView
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
Adaptor specialPentru pozitia 0 returnam headerPentru alte pozitii decalam cu 1
RecyclerViewListView
if (p == 0) return header;else
return adaptor.get(p-1)
RecyclerViewListView
Runda 5 - Updates
update la telefon
RecyclerViewListView
update la sdk
RecyclerViewListView
Cum migram?
Echivalentul ListView
RecyclerView recycler = findViewById();
recycler.setLayoutManager( new LinearLayoutManager(VERTICAL, false));
recycler.setAdapter(new MyAdapter(data));
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); }}
• ListView itemClick vs click listener clasic
• ListView headers vs headere proprii