RecycleView 使用小結
使用配置
-
在
module
gradle檔案中配置:compile 'com.android.support:recyclerview-v7:25.3.0'
-
注意:
-
當存在v7包的另一個控制元件時,最好保持一致。
compile 'com.android.support:appcompat-v7:25.3.0' compile 'com.android.support:recyclerview-v7:25.3.0'
-
使用介紹
- 和listview一樣,在xml中進行佔位;
- 在程式碼中找到該控制元件。
步驟一:準備viewholder
先寫需要載入的xml佈局,寫完整佈局中控制元件的id等資訊;
-
建立一個類,繼承
RecyclerView.ViewHolder
,並找出需要載入xml的控制元件生成為成員方法。class TitleViewHold extends RecyclerView.ViewHolder { private final TextView mTextView; private final TextView mTextView1; public TitleViewHold(View itemView) { super(itemView); mTextView = (TextView) itemView.findViewById(R.id.textView); mTextView1 = (TextView) itemView.findViewById(R.id.textView2); } }
步驟二:準備adapter
// 推薦採用泛型:class MyAdapter extends RecyclerView.Adapter<TitleViewHold >
建立一個類繼承
RecyclerView.Adapter
-
重寫三個方法
class MyAdapter extends RecyclerView.Adapter{ @Override // 繫結佈局 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(Test.this).inflate(R.layout.title_view, parent, false); return new TitleViewHold(inflate); } @Override // 載入資料 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { holder.mTextView.setText(mList.get(position)); holder.mTextView1.setText(mList.get(position)); } @Override // 獲取條目個數 public int getItemCount() { return mList.size(); } }
步驟三:載入介面卡
注意設定佈局管理器!!!
-
可以通過修改佈局管理器顯示不同展示樣式,例如瀑布流等。
RecyclerView rv = (RecyclerView) findViewById(R.id.rv); rv.setLayoutManager(new LinearLayoutManager(this)); rv.setAdapter(new MyAdapter());
載入多種佈局
注意要點:
建立的adapter繼承不需要泛型種類;
多種佈局與單一佈局區別只是在於adapter的不同;
建立多個viewholder用來載入不同佈局;
重寫
getItemCount()
方法獲取佈局種類;重寫
getItemViewType()
方法獲取當前的佈局型別;在
onCreateViewHolder()
初次判斷需要載入的佈局型別,並且例項化對應的viewholder;-
在
onBindViewHolder()
中繫結資料;public class MyAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case TYPE_TITLE: return new TitleViewHold(LayoutInflater.from(MainActivity.this).inflate(R.layout.title_view, parent, false)); case TYPE_CONTENT: return new ContentHold(LayoutInflater.from(MainActivity.this).inflate(R.layout.content, parent, false)); } TitleViewHold titleViewHold = new TitleViewHold(LayoutInflater.from(parent.getContext()).inflate(R.layout.title_view, parent, false)); return titleViewHold; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof TitleViewHold) { ((TitleViewHold) holder).mTextView.setText(mList.get(position)); ((TitleViewHold) holder).mTextView1.setText(mList.get(position)); } else { ((ContentHold) holder).mTv.setText(mList1.get(position)); } } @Override public int getItemCount() { return mList.size(); } @Override public int getItemViewType(int position) { if (position % 2 == 0) { return TYPE_TITLE; } else return TYPE_CONTENT; } }
總結:
- RecycleView總體比listview更加靈活,可擴充套件性不錯,效能優化也可以;
- 關於瀑布流,如果大家認為有必要我再添上吧;
- 有問題隨時交流
- 郵箱: goorwl@163.com
- GitHub
相關文章
- Android TV開發總結【RecycleView】AndroidView
- recycleView通用AdapterViewAPT
- CocoaPods使用小結
- Git使用小結Git
- FlatBuffers使用小結
- 使用RecycleView實現無限滾動的日曆View
- 安卓開發中RecycleView簡單使用步驟安卓View
- 命令列使用小結命令列
- PyCharm工具使用小結PyCharm
- DM TDD使用小結
- Spring之RestTemplate使用小結SpringREST
- Android ConstraintLayout 最新使用小結AndroidAI
- XGBoost類庫使用小結
- git 子模組使用小結Git
- Editor.md 使用小結
- W5500 使用小結
- .Net(c#)使用 Kafka 小結C#Kafka
- Flutter使用TabBar問題小結FluttertabBar
- YUIDoc的使用方法小結UI
- Elasticsearch Head外掛使用小結Elasticsearch
- 阿里出品Excel工具EasyExcel使用小結阿里Excel
- Redux在React中的使用小結ReduxReact
- Elasticsearch-head外掛使用小結Elasticsearch
- 日誌檔案使用小結(轉)
- Jib使用小結(Maven外掛版)Maven
- Pytorch Optimizer類使用小技巧總結PyTorch
- ThinkPHP 5 模型使用歷程 - 小結PHP模型
- Mybatis使用小技巧-自定義結果集MyBatis
- Python之時間和日期使用小結Python
- SimpleDateFormat.format的簡單使用小結ORM
- 180813-Spring之RestTemplate使用小結一SpringREST
- Spring之RequestBody的使用姿勢小結Spring
- 使用mpvue開發github小程式總結VueGithub
- DNS之BIND使用小結(Forward轉發)DNSForward
- iOS開發基礎篇--NSNotificationCenter使用小結iOS
- 使用setInterval與clearInterval踩的小坑總結
- Laravel 事務中 使用 悲觀鎖 小結Laravel
- FloatingActionButton在RecycleView中滑動隱藏顯示View
- android檢測卡頓問題,recycleview卡頓AndroidView