美文网首页
使用 Anko 写 RecyclerView

使用 Anko 写 RecyclerView

作者: Obadiah | 来源:发表于2020-06-28 17:14 被阅读0次

    单个条目

    import android.graphics.Color
    import android.view.View
    import android.view.ViewGroup
    import android.widget.LinearLayout
    import org.jetbrains.anko.*
    
    class MovieUI : AnkoComponent<ViewGroup>{
    
        companion object {
            const val tvTitleId = 1
            const val tvYearId = 2
        }
    
        override fun createView(ui: AnkoContext<ViewGroup>): View = with(ui){
            verticalLayout {
                lparams(matchParent, wrapContent)
                padding = dip(16)
    
                textView {
                    id = tvTitleId
                    layoutParams = LinearLayout.LayoutParams(matchParent, wrapContent)
                    text = "Sherlock"
                    textSize = 16f
                    textColor = Color.BLACK
                }
    
                textView {
                    id = tvYearId
                    layoutParams = LinearLayout.LayoutParams(matchParent, wrapContent)
                    text = "2009"
                    textSize = 14f
                }
            }
        }
    }
    

    adapter

    import android.view.View
    import android.view.ViewGroup
    import android.widget.TextView
    import androidx.recyclerview.widget.RecyclerView
    import me.maybeiwill.copylatitudelongitude.ui.MovieUI
    import org.jetbrains.anko.AnkoContext
    
    data class Movie(var title: String, var year: Int)
    class MovieAdapter(private var movies: ArrayList<Movie>) :
        RecyclerView.Adapter<MovieAdapter.MovieViewHolder>() {
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
            return MovieViewHolder(MovieUI().createView(AnkoContext.create(parent.context, parent)))
        }
    
        override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
            val movie = movies[position]
            holder.tvTitle.text = movie.title
            holder.tvYear.text = "${movie.year}"
        }
    
        override fun getItemCount(): Int {
            return movies.size
        }
    
        inner class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
            var tvTitle: TextView = itemView.findViewById(MovieUI.tvTitleId)
            var tvYear: TextView = itemView.findViewById(MovieUI.tvYearId)
        }
    }
    

    activity

    recyclerView.layoutManager = LinearLayoutManager(this)
    
    val list: ArrayList<Movie> = arrayListOf()
    list.add(Movie("Sherlock Holmes",2009))
    list.add(Movie("The Shawshank Redemption",1994))
    list.add(Movie("Forrest Gump",1994))
    list.add(Movie("Titanic",1997))
    list.add(Movie("Taxi",1998))
    list.add(Movie("Inception",1994))
    list.add(Movie("The Imitation Game",2014))
    
    recyclerView.adapter = MovieAdapter(list)
    

    相关文章

      网友评论

          本文标题:使用 Anko 写 RecyclerView

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