前言
大家都知道ListView在我们开发中很常用,Android5.0的到来,它给我们带来了一个替代
ListView的新的控件,也可以说是ListView的升级版,那就是RecyclerView。
接下来就让我们看一下,它们的作用的用法吧~!
RecyclerView
RecyclerView控件是比ListView更先进、灵活的版本。
该RecyclerView类通过以下几点简化了显示和处理大量的数据:
1.为每个条目位置提供了布局管理器(RecyclerView.setLayoutManager)
RecyclerView提供这些内置的布局管理器:
LinearLayoutManager(用来)显示垂直或水平滚动的列表项
GridLayoutManager(用来)显示网格中的item(项)
StaggeredGridLayoutManager(用来)显示交错的网格item(项目)
可以通过继承RecyclerView.LayoutManager类来自定义自己的布局管理器。
2.为每个条目设置了操作动画(RecyclerView.setItemAnimator)
使用步骤:
1.导入sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar
2.xml配置
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity"
- >
- <android.support.v7.widget.RecyclerView
- android:id="@+id/recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbars="vertical"
- tools:listitem="@layout/list_basic_item"
- />
-
- </RelativeLayout>
3.Activity代码
- public class Main extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
-
- final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
-
- recyclerView.setLayoutManager(layoutManager);
-
- final SampleRecyclerAdapter sampleRecyclerAdapter = new SampleRecyclerAdapter();
-
- recyclerView.setAdapter(sampleRecyclerAdapter);
- }
- }
4.Adapter代码
- public class SampleRecyclerAdapter extends
- RecyclerView.Adapter<SampleRecyclerAdapter.ViewHolder>
- {
-
- private final ArrayList<SampleModel> sampleData = DemoApp.getSampleData(20);
-
-
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parentViewGroup, int i)
- {
-
-
-
-
-
-
- View item = LayoutInflater.from(parentViewGroup.getContext()).inflate(
- R.layout.list_basic_item, parentViewGroup, false);
-
- return new ViewHolder(item);
-
- }
-
- @Override
- public void onBindViewHolder(ViewHolder viewHolder, final int position)
- {
-
- final SampleModel rowData = sampleData.get(position);
-
-
- viewHolder.textViewSample.setText(rowData.getSampleText());
- viewHolder.itemView.setTag(rowData);
- }
-
- @Override
- public int getItemCount()
- {
-
- return sampleData.size();
- }
-
- public void removeData(int position)
- {
- sampleData.remove(position);
-
- notifyItemRemoved(position);
-
- }
-
- public void addItem(int positionToAdd)
- {
- sampleData.add(positionToAdd,new SampleModel("新的列表项" + new Random().nextInt(10000)));
-
- notifyItemInserted(positionToAdd);
- }
-
- public static class ViewHolder extends RecyclerView.ViewHolder
- {
-
- private final TextView textViewSample;
-
- public ViewHolder(View itemView)
- {
- super(itemView);
-
- textViewSample = (TextView) itemView
- .findViewById(R.id.textViewSample);
- }
- }
-
- }