天天看點

RecyclerView怎麼能沒有ItemClickListener?加一個!

<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&gt;

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,如需轉載請自行聯系原作者

繼續閱讀