Kotlin中ListView与RecyclerView的应用讲解

写下来自己以后看:
先是item的布局文件:
里边放了一个图片和一个文本框


ListView:
布局文件:

适配器:
class FruitAdapter(private val context: Context, private val list : List) : BaseAdapter() {override fun getCount(): Int = list.sizeoverride fun getItem(position: Int): Any = list[position]override fun getItemId(position: Int): Long = position.toLong()override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? {var convertView = convertViewvar holder : ViewHolder? = nullif (convertView == null){holder = ViewHolder()convertView = View.inflate(context,R.layout.item_list_view,null)holder.textView = convertView.findViewById(R.id.textView) as TextViewholder.imageView = convertView.findViewById(R.id.imageView) as ImageViewholder.linearLayout = convertView.findViewById(R.id.linearLayout) as LinearLayoutconvertView.tag = holder}else{holder = convertView.tag as ViewHolder}holder.textView!!.text = list[position].nameholder.imageView!!.setImageResource(list[position].image)holder.linearLayout!!.setOnClickListener {Toast.makeText(context,list[position].name,Toast.LENGTH_SHORT).show()}return convertView}internal class ViewHolder{var textView : TextView? = nullvar imageView : ImageView? = nullvar linearLayout : LinearLayout? = null}}

剩下的就是逻辑处理:
class ListViewActivity : AppCompatActivity() {private val bean = ArrayList()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_list_view)for (i in 1..100){bean.add(Fruit(i.toString(),R.drawable.ic_launcher_foreground))}val adapter = FruitAdapter(this,bean)listView.adapter = adapter}}

RecyclerView:
布局文件:

适配器:
class FruitRecyclerViewAdapter(private val context: Context,private val list: List) : RecyclerView.Adapter() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view : View = LayoutInflater.from(context).inflate(R.layout.item_list_view,null)return ViewHolder(view)}override fun onBindViewHolder(holder: ViewHolder, position: Int) {holder.itemView.textView.text = list[position].nameholder.itemView.imageView.setImageResource(list[position].image)holder.itemView.linearLayout.setOnClickListener {Toast.makeText(context,list[position].name,Toast.LENGTH_SHORT).show()}}override fun getItemCount(): Int = list.sizeclass ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {private val textView : TextView = itemView.findViewById(R.id.textView)private val imageView : ImageView = itemView.findViewById(R.id.imageView)private val linearLayout : LinearLayout = itemView.findViewById(R.id.linearLayout)}}

逻辑代码:
class RecyclerViewActivity : AppCompatActivity() {private val bean = ArrayList()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_recycler_view)repeat(3){for (i in 1..15){bean.add(Fruit(i.toString(),R.drawable.ic_launcher_foreground))}}val layoutManger = LinearLayoutManager(this)//layoutManger.orientation = LinearLayoutManager.HORIZONTALrecyclerView.layoutManager = layoutMangerval adapter = FruitRecyclerViewAdapter(this,bean)recyclerView.adapter = adapter}}

这里的repeat函数是重复三次,意思就是会有三个1到15,也就是此recyclerView会有45个item.
现在的是纵向滑动的,如果要改成横向的,就把我代码中的注释掉的
//layoutManger.orientation = LinearLayoutManager.HORIZONTAL
取消注释就可以实现横向滑动了,如果不嫌弃难看,布局文件就不用改。
最后是实体类:
class Fruit(val name : String,val image : Int) {}

定义了一个name用来显示名字,定义了一个image,用来显示图片。
【Kotlin中ListView与RecyclerView的应用讲解】
到此这篇关于Kotlin中ListView与RecyclerView的应用讲解的文章就介绍到这了,更多相关Kotlin中ListView与RecyclerView内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读