Introdução ao RecyclerView

Post on 20-Jan-2017

400 Views

Category:

Mobile

0 Downloads

Preview:

Click to see full reader

Transcript

Introdução ao RecyclerView

Desenvolvedor Mobile

Meu apps pessoais

https://goo.gl/sVpNU7https://goo.gl/Y7D9X

Surgiu no Android Lollipop junto com o Material Design.Foi criado para "substituir" o ListView. Tem como objetivo reaproveitar as views, ele recicla e implementa usando o padrão ViewHolder.

Vantagens• Suporte a animações ao adicionar e remover itens

da lista;

• Controle automático da reutilização das views;• Permitir alterar o gerenciador de layout para

rendereizar as views como listas, grids, etc.

compile ‘com.android.support:recyclerview-v7:23.1.0’

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" />

/res/layout/activity_recycler.xml

public class RecyclerActivity extends Activity {

RecyclerView mRecyclerView;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler);

mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(new BasicListAdapter(this)); }

}

O Adapter do RecyclerView utiliza o conceito de Generics, com isso os métodos onCreateViewHolder() e onBindViewHolder() recebem o tipo genérico usado na classe.

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private Context context; private List<Object> list;

public onCreateViewHolder(Context context, List<Object> list) {…}

@Override public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { //Cria uma subclasse de RecyclerView.ViewHolder View view = LayoutInflater.from(context).inflate(R.layout.my_adapter, viewGroup, false); MyViewHolder holder = new MyViewHolder(view); return holder; }

@Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //Receber o índice do elemento e atualiza as views que estão //dentro do ViewHolder }}

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { //onCreateViewHolder() e onBindViewHolder()

public static class MyViewHolder extends RecyclerView.ViewHolder { public MyViewHolder(View view) { //Implementação…. } }

}

O RecyclerView provê maior controle sobre

os itens na tela

@Overridepublic void onBindViewHolder(final MyViewHolder holder, final int position) { String name = list.get(position); textViewNome.setText(mDataset.get(position)); textViewNome.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { remove(name); } });}

Obrigado

@RodrigoAmorarodrigo.amora.freitas@gmail.com

top related