一、RecyclerView概述
RecyclerView是一個靈活的、可定製化的、高性能的控件,是用來替換ListView、GridView等列表型控件的新型控件。RecyclerView可以替換ListView、GridView,並且提供了更好的適配器,可以靈活地管理布局和動畫,可以加入裝飾器,使得我們可以自由定製它的布局、樣式和行為。
二、RecyclerView的特點
1.使用RecyclerView可以處理大量的數據,而不用擔心會出現OOM。
2.現代化的數據動態綁定模式。使用RecyclerView可以方法是更簡單的處理數據綁定問題,可以從ViewHolder中向View綁定數據。這樣在有大量數據變更時會比較高效地方法是數據綁定。
3.在滾動過程中可以高效地處理item控件的回收與重用,改善雜亂綁定view而導致adapter效率降低的問題。
4.RecyclerView是高度模塊化的組件,這意味着它幾乎可以定製所有的書寫輸出模型,在實現流暢的垂直布局的同時也可以實現複雜的網格控件。
5.您可以完全替換項的動畫。RecyclerView允許您完全更改動畫並在需要時添加新的項動畫。該庫默認提供了典型的創建,移動,刪除集合,以滿足大多數應用程序的需要。
三、RecyclerView的使用
1. 添加RecyclerView控件
在 Android Studio的design模式下找到要添加RecyclerView的xml布局文件進行編寫,添加如下代碼:
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
/>
2.適配器及數據綁定
在使用RecyclerView之前,需要為它編寫一個Adapter,實現數據的綁定過程。要達到最好的效果,建議使用android.support.v7.widget.RecyclerView。
RecyclerView.Adapte,作為Recycler關鍵的適配器,必須為數據源提供綁定的,view創建,以及視圖和數據源綁定設置的方法。
最簡單的Adapter代碼示例:
public class MyAdapter extends RecyclerView.Adapter {
private List mDataSet;
public MyAdapter(List dataSet) {
mDataSet = dataSet;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View v) {
super(v);
mTextView = (TextView) v.findViewById(R.id.textView);
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_text_view, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.mTextView.setText(mDataSet.get(position));
}
@Override
public int getItemCount() {
return mDataSet.size();
}
}
3.使用RecyclerView的LayoutManager和ItemDecoration
如果使用RecyclerView,您需要實現LayoutManager和ItemDecoration接口來實現您想要的布局和構造細節。
LinearLayoutManager是框架內置的一個Layout manager,支持在RecyclerView中的線性布局,包括垂直和水平方向。
代碼示例:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
MyAdapter myAdapter = new MyAdapter(myDataSet);
recyclerView.setAdapter(myAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(this,layoutManager.getOrientation()));
四、RecyclerView的高級應用
1.定義多個Item View布局
在RecyclerView中,可以根據其類型定義多個布局文件。多個類型的布局由其在適配器中提供的不同值定義,在RecyclerView中會自動地將它們綁定到各自的項視圖中。
2.自定義Item View
可以通過state_pressed、state_focused、state_checked來自定義Item View的background。
3.添加頭部和底部的View
RecyclerView提供了一個RecyclerView.AdapterWrapper和一個RecyclerView.ItemDecoration類來支持addHeaderView()、addFooterView()方法。添加這些View僅需要告訴RecyclerView初始位置即可。
五、結論
RecyclerView是一個非常強大、靈活、可擴展的控件,可以完美地替代ListView、GridView等控件,並且提供了更好的性能和適配器,可以處理大量數據,與時俱進的數據和視圖綁定模式在滾動過程中以較高效率處理item控件的回收與重用,系統可以在實現流暢垂直對齊的同時也可以創建複雜網格,為用戶提供更好的交互體驗。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/241026.html