<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,如需转载请自行联系原作者