将替代ListView的RecyclerView 的使用(一)
RecyclerView 是 android-support-v7-21 版本號中新增的一個 Widgets, 另一個 CardView 會在下次介紹使用。官方介紹 RecyclerView 是 ListView 的升級版本號,更加先進和靈活。我們寫一個簡單的實例例。來看一下到底有多先進和靈活。
build.gradle 配置
開始
?
首先是布局文件里使用 RecyclerView
<RelativeLayoutxmlns: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=".MyActivity" ><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="vertical" /></RelativeLayout>Activity 中
?
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); // 創建一個線性布局管理器 LinearLayoutManager layoutManager = new LinearLayoutManager(this); // 設置布局管理器 recyclerView.setLayoutManager(layoutManager); // 創建數據集 String[] dataset = new String[100]; for (int i = 0; i < dataset.length; i++){ dataset = "item" + i; } // 創建Adapter,并指定數據集 MyAdapter adapter = new MyAdapter(dataset); // 設置Adapter recyclerView.setAdapter(adapter); }
?
RecyclerView 首先的一個特點就是,將 layout 抽象成了一個 LayoutManager,RecylerView 不負責子 View 的布局,我們能夠自己定義 LayoutManager 來實現不同的布局效果。眼下僅僅提供了LinearLayoutManager。 LinearLayoutManager 能夠指定方向,默認是垂直, 能夠指定水平, 這樣就輕松實現了水平的 ListView。
接下來看 Adapter 是怎么實現的
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {// 數據集private String[] mDataset;public MyAdapter(String[] dataset){super();mDataset = dataset;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i){// 創建一個View,簡單起見直接使用系統提供的布局。就是一個TextViewView view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);// 創建一個ViewHolderViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(ViewHolder viewHolder, int i){// 綁定數據到ViewHolder上viewHolder.mTextView.setText(mDataset);}@Overridepublic int getItemCount(){return mDataset.length;}public static class ViewHolder extends RecyclerView.ViewHolder{public TextView mTextView;public ViewHolder(View itemView){super(itemView);mTextView = (TextView) itemView;}}}
?
RecyclerView 的另一個特點是標準化了 ViewHolder。 編寫 Adapter 面向的是 ViewHoder 而不在是View 了, 復用的邏輯被封裝了。 寫起來更加簡單。
?
RecyclerView 簡單使用之后, 發現確實靈活了非常多, RecyclerView 的特性還有非常多。 下一篇文章再繼續探索,未完待續
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/mqxnongmin/p/10721303.html
總結
以上是生活随笔為你收集整理的将替代ListView的RecyclerView 的使用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7 安装方式汇总
- 下一篇: Lecture4_14_2.多维随机变量