Introdução ao RecyclerView
-
Upload
rodrigo-amora -
Category
Mobile
-
view
400 -
download
0
Transcript of Introdução ao RecyclerView
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