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