Recycler View





Principios del View Holder


La explicación más sencilla

Principios del View Holder


La explicación más sencilla

El uso del ViewHolder nos va ayudar al rendimiento de nuestras listas. Este patrón de diseño es recomendado desde por el propio Google desde antes que tuvieramos un widget como el RecyclerView.
RecyclerView


¿Qué es?

El RecyclerView fué presentado el año pasado como un nuevo widget (El cuál aún no está terminado) que nos permite la presentación de items de información, como un ListView o un GridView
RecyclerView


Su objetivo

El RecyclerView no se preocupa por el rendimiento en el dibujado o en acomodar de una manera correcta. Lo unico que le importa es el reciclado.
RecyclerView


Su objetivo

La representación de tus datos va a depender de las siguientes clases.
- Adapter
- ViewHolder
- LayoutManager
- ItemDecoration
- ItemAnimation
Construyamos un RecyclerView





RecyclerView


Importar la librería

compile 'com.android.support:recyclerview-v7:21.0.+'
RecyclerView


Construcción del RecyclerView

RecyclerView mRecyclerView;
@Override
public View onCreateView (LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
//El LayoutManager define la distribución que tendrán los items del RecyclerView
LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);
return rootView;
}RecyclerView


Construcción del Adaptador y el ViewHolder

public class RecyclerViewDemoAdapter extends
RecyclerView.Adapter
<RecyclerViewDemoAdapter.ListItemViewHolder> {
private List<DemoModel> items;
RecyclerViewDemoAdapter(List<DemoModel> modelData) {
if (modelData == null) {
throw new IllegalArgumentException(
"modelData must not be null");
}
this.items = modelData;
}
@Override
public ListItemViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.item_demo_01,
viewGroup,
false);
return new ListItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(
ListItemViewHolder viewHolder, int position) {
DemoModel model = items.get(position);
viewHolder.label.setText(model.label);
String dateStr = DateUtils.formatDateTime(
viewHolder.label.getContext(),
model.dateTime.getTime(),
DateUtils.FORMAT_ABBREV_ALL);
viewHolder.dateTime.setText(dateStr);
}
@Override
public int getItemCount() {
return items.size();
}
public final static class ListItemViewHolder
extends RecyclerView.ViewHolder {
// … shown above in the ViewHolder section
}
}RecyclerView
By Petter Hdz
RecyclerView
- 586