美文网首页
Kotlin学习之RecyclerView的adapter的写法

Kotlin学习之RecyclerView的adapter的写法

作者: 南娇 | 来源:发表于2018-07-04 10:32 被阅读42次

优于别人,并不高贵,真正的高贵是优于过去的自己

我也是刚开始学习kotlin代码中还是有很多java代码的身影

class MainActivity : AppCompatActivity() {

//lateinit延时实例化
private lateinit var mRecycelrview: RecyclerView
private lateinit var mAdapter: MyAdapter
private lateinit var mDatas: MutableList<String>

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //初始化集合
    mDatas = mutableListOf()
    //for循环从30开始降到0,每次减1
    for (i in 30 downTo 0 step 1) {
        mDatas.add("i-->$i")
    }
    mRecycelrview = findViewById(R.id.recyclerview)
    mAdapter = MyAdapter(this, mDatas)
    //设置layoutManager
    mRecycelrview.layoutManager = LinearLayoutManager(this)
    //设置adapter
    mRecycelrview.adapter = mAdapter

}
}

其实再kotlin中findViewById可以省略掉,recyclerview就是直接用id也就行,这样写就有点像kotlin写法了

class MainActivity : AppCompatActivity() {

//lateinit延时实例化
private lateinit var mAdapter: MyAdapter
private lateinit var mDatas: MutableList<String>

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //初始化集合
    mDatas = mutableListOf()
    //for循环从30开始降到0,每次减1
    for (i in 30 downTo 0 step 1) {
        mDatas.add("i-->$i")
    }
    mAdapter = MyAdapter(this, mDatas)
    //设置layoutManager
    recyclerview.layoutManager = LinearLayoutManager(this)
    //设置adapter
    recyclerview.adapter = mAdapter

}
}

下面看看adapter的写法 ,看起来很像java代码的写法,只不过是定义变了,我目前也就会这么一点点,其他牛逼的写法还需要慢慢学习,网上有很多不同的写法,暂时还看不太懂

class MyAdapter : RecyclerView.Adapter<MyAdapter.ViewHolder> {
var mContext: Context
var mDatas: List<String>
var mInflater: LayoutInflater
//这是构造方法
constructor(context: Context, list: List<String>) {
    this.mContext = context
    this.mDatas = list
    mInflater = LayoutInflater.from(mContext)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val itemView: View = mInflater.inflate(R.layout.adapter_item_layout, null)
    val holder: ViewHolder = ViewHolder(itemView)
    return holder
}

override fun getItemCount(): Int {
    if (mDatas.size > 0 && mDatas != null) {
        return mDatas.size
    }
    return 0
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.text.text = mDatas[position]
}


class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    var text: TextView = itemView.findViewById(R.id.text_adapter)
}
}

运行以后的效果就是下面这个样子的


截屏_20180704_103001.jpg

相关文章

网友评论

      本文标题:Kotlin学习之RecyclerView的adapter的写法

      本文链接:https://www.haomeiwen.com/subject/zkzsuftx.html