<code>RecyclerView</code>可以用來代替<code>ListView</code>來展現大量的資料。Google在<code>RecyclerView</code>中提升了性能,和更多好用的API。
使用<code>RecyclerView</code>不僅需要設定adapter,還需要設計值layout manager。
要建立adapter,需要繼承并實作<code>RecyclerView.Adapter</code>和<code>RecyclerView.ViewHolder</code>。<code>RecyclerView</code>專門對view holder這部分的API做了一些優化。
```kotlin
/**
Created by uncle_charlie on 7/4/2016.
*/
class CategoryRecyelerAdapter(var context: Context, var categoryList: ArrayList)
: RecyclerView.Adapter() {.categoryviewholder>
override fun onBindViewHolder(holder: CategoryViewHolder?, position: Int) {
val categoryInfo = categoryList.get(position)
Picasso.with(context).load(categoryInfo.imageUrl)
.resize(80, 80)
.into(holder?.categoryImageView)
}
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): CategoryViewHolder? {
val layoutView = LayoutInflater.from(context).inflate(R.layout.category_grid_item, null)
var viewHolder = CategoryViewHolder(layoutView)
return viewHolder
override fun getItemCount(): Int {
return categoryList.count()
inner class CategoryViewHolder(var categoryView: View) : RecyclerView.ViewHolder(categoryView) {
var categoryImageView: ImageView? = null;
var categoryTextView: TextView? = null;
```
<code>CategoryViewHolder</code>繼承<code>RecyclerView.ViewHolder</code>。構造函數需要一個<code>View</code>類型的參數。使用這個view來獲得view holder裡hold的view,比如這裡的image view和text view。
<code>onCreateViewHolder()</code> 建立view holder。<code>val layoutView = LayoutInflater.from(context).inflate(...)</code>,解析<code>RecyclerView</code>的每一個item的layout。并把這個解析之後的view傳入前面說的view holder。
<code>onBindViewHolder()</code>,這裡就是給view holder裡的view指派,比如這裡用<code>Picasso</code>給image view設定圖檔:<code>Picasso.with(context)...into(holder?.categoryImageView)</code>。
<code>getItemCount()</code>資料源裡有多少資料。
如何使用:
參考:
<a href="http://sapandiwakar.in/recycler-view-item-click-handler/">http://sapandiwakar.in/recycler-view-item-click-handler/</a>
歡迎加群互相學習,共同進步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,轉載請注明出處!
本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/sunshine-anycall/p/5377743.html,如需轉載請自行聯系原作者