**轉載請注明本文出自Cym的博客([http://blog.csdn.net/cym492224103](http://blog.csdn.net/cym492224103)**),謝謝支持!**
**
**
前言
大家都知道ListView在我們開發中很常用,Android5.0的到來,它給我們帶來了一個替代
ListView的新的控件,也可以說是ListView的升級版,那就是RecyclerView。
接下來就讓我們看一下,它們的作用的用法吧~!
RecyclerView
[RecyclerView](http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html)控件是比[ListView](http://developer.android.com/reference/android/widget/ListView.html)更先進、靈活的版本。
該[RecyclerView](http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html)類通過以下幾點簡化了顯示和處理大量的數據:
1.為每個條目位置提供了布局管理器(**RecyclerView.setLayoutManager**)
[RecyclerView](http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html)提供這些內置的布局管理器:
[LinearLayoutManager](http://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html)(用來)顯示垂直或水平滾動的列表項
[GridLayoutManager](http://developer.android.com/reference/android/support/v7/widget/GridLayoutManager.html)(用來)顯示網格中的item(項)
[StaggeredGridLayoutManager](http://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager.html)(用來)顯示交錯的網格item(項目)
可以通過繼承[RecyclerView.LayoutManager](http://developer.android.com/reference/android/support/v7/widget/RecyclerView.LayoutManager.html)類來自定義自己的布局管理器。
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) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 獲取RecyclerView對象
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// 創建線性布局管理器(默認是垂直方向)
final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
// 為RecyclerView指定布局管理對象
recyclerView.setLayoutManager(layoutManager);
// 創建Adapter
final SampleRecyclerAdapter sampleRecyclerAdapter = new SampleRecyclerAdapter();
// 填充Adapter
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)
{
// 獲得列表項控件(LinearLayer對象)
// list_basic_item.xml布局文件中只包含一個<LinearLayer>標簽,在該標簽中包含
// 了一個<TextView>標簽
// item是LinearLayout對象
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)
{
// 獲取當前item中顯示的數據
final SampleModel rowData = sampleData.get(position);
// 設置要顯示的數據
viewHolder.textViewSample.setText(rowData.getSampleText());
viewHolder.itemView.setTag(rowData);
}
@Override
public int getItemCount()
{
return sampleData.size();
}
// 刪除指定的Item
public void removeData(int position)
{
sampleData.remove(position);
// 通知RecyclerView控件某個Item已經被刪除
notifyItemRemoved(position);
}
// 在指定位置添加一個新的Item
public void addItem(int positionToAdd)
{
sampleData.add(positionToAdd,new SampleModel("新的列表項" + new Random().nextInt(10000)));
// 通知RecyclerView控件插入了某個Item
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);
}
}
}
~~~
- 前言
- ym—— Android 5.0學習之創建模擬器
- ym—— Android 5.0學習之使用Material主題
- ym—— Android 5.0學習之使用Palette
- ym—— Android 5.0學習之AnimatedVectorDrawable
- ym—— Android 5.0學習之ListView升級版RecyclerView
- ym—— Android 5.0學習之CardView
- ym—— Android 5.0學習之Activity過渡動畫
- ym—— Android 5.0學習之定義陰影
- ym—— Android 5.0學習之動畫
- ym—— Android 5.0學習之Tinting和Clipping
- ym—— Android 5.0學習之感想篇(含Demo)