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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@ id/linearLayout"
    >

    <ImageView
        android:id="@ id/imageView"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center_vertical"
        />

    <TextView
        android:id="@ id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        />
</LinearLayout>

ListView:
布局文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ListViewActivity">

    <ListView
        android:id="@ id/listView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

适配器:

class FruitAdapter(private val context: Context, private val list : List<Fruit>) : BaseAdapter() {

    override fun getCount(): Int = list.size

    override 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 = convertView
        var holder : ViewHolder? = null
        if (convertView == null){
            holder = ViewHolder()
            convertView = View.inflate(context,R.layout.item_list_view,null)
            holder.textView = convertView.findViewById<View>(R.id.textView) as TextView
            holder.imageView = convertView.findViewById<View>(R.id.imageView) as ImageView
            holder.linearLayout = convertView.findViewById<View>(R.id.linearLayout) as LinearLayout
            convertView.tag = holder
        }else{
            holder = convertView.tag as ViewHolder
        }
        holder.textView!!.text = list[position].name
        holder.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? = null
        var imageView : ImageView? = null
        var linearLayout : LinearLayout? = null
    }
}

剩下的就是逻辑处理:

class ListViewActivity : AppCompatActivity() {

    private val bean = ArrayList<Fruit>()

    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:
布局文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecyclerViewActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@ id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

适配器:

class FruitRecyclerViewAdapter(private val context: Context,private val list: List<Fruit>) : RecyclerView.Adapter<FruitRecyclerViewAdapter.ViewHolder>() {

    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].name
        holder.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.size

    class 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<Fruit>()

    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.HORIZONTAL
        recyclerView.layoutManager = layoutManger
        val 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内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Kotlin中ListView与RecyclerView的应用讲解的更多相关文章

  1. ios – 在React Native中设置ListView的高度

    我需要设置ListView的宽度和高度.当设置宽度按预期工作时,设置高度无效,ListView总是伸展到屏幕的几乎底部.我用这种方式在render方法中创建ListView:这是它的风格:我还尝试通过此命令在方法中设置其高度:当我尝试使用此命令设置宽度时,它可以工作.但设定高度什么都不做.如何将ListView的高度设置为所需的值?

  2. Kotlin难点解析:extension和this指针

    扩展是Kotlin语言中使用非常简单的一个特性。关于这个问题,其实我之前的一篇文章[[Kotlin]LambdaandExtension](https://www.jianshu.com/p/d7a...中有提到过。为了解决这个问题,官方提出了两个新的概念:dispatchreceiver和extensionreceiver。extensionreceiver:中文翻译为扩展接收者。为了简化,这里我们将dispatchreceiver简称为DR,将extensionreceiver简称为ER。如果你习惯了

  3. android – AnimateLayoutChanges不适用于RecyclerView

    XMLJAVA解决方法过了一会儿我得到了解决方案.我创建了一个函数来设置recyclelerView高度的动画.JAVA}

  4. Android ListView中的弹出菜单问题

    )方法并把方法在您的适配器类中.注意:act是在创建构造函数适配器时必须绑定的Activity,例如:在Activity中,您可以编写代码:

  5. android – 在RecyclerView中更新ProgressBar

    我有一个RecyclerView.其中,项目具有标准布局–一个TextView和一个ProgressBar.项目在运行时添加到recyclerview.每当添加一个Item时,都会启动一个更新ProgressBar的AsyncTask.AsynTask保存了RecyclerViewAdapter对ProgressBar对象的引用.当回收器视图中的项目太多时,会发生此问题.我知道RecyclerVi

  6. android – 在listview中添加viewpager作为滚动标题

    我试图在列表标题中添加Viewpager(使用支持库4),但它没有显示任何内容.这是我的代码请帮忙.它将在列表标题中不作为项目,因此它不应该是一个问题.解决方法listadapter之后的listview页眉和页脚显示.如果你尝试setadapter,并且看不到viewpager.检查viewpager的宽度和高度.如果viewpager的宽度或高度值为0.在viewgroup中创建LienarL

  7. android – WearableRecyclerView .scrollToPosition不适合穿?

    我有一组应该在列表中填充的项目,因为我使用了WearableRecyclerView.在某些情况下,我希望特定的项目成为焦点以供选择.我正在使用Wearablelinearlayoutmanager的scrollToPosition()方法,但监视列表不会滚动到所需的位置,但是在使用RecyclerView和scrollLooutManager的scrollToPosition()的手机上也是如此

  8. android – Listview滚动错误5.1

    刚注意到ListView中一个非常奇怪的错误,似乎只能重现5.1,我真的很想知道没有人提起它.很容易重现:查找具有足够项目的ListView,滚动到列表的3/4,现在快速向上滚动,您会注意到ListView滚动一直到底部!现在IMO这是一个非常严重的错误,我想尽快找到解决方法/修复,所以任何人都有一个?更新:ListView.java没有从SDK21更改,但AbsListView.java没有.解决方法您可以使用回收站视图而不是列表视图,因为Google可能不再支持它.试试YouTube上的幻灯片视频.它

  9. android – 在RecyclerView中更改单个drawable的颜色将更改所有drawable

    我只是试图根据一个值改变我的行内部drawable的颜色,但是不是一个drawable,适配器改变了所有这些颜色.这是我的适配器:知道怎么做?谢谢您的帮助!!!

  10. android – 在ListView中禁用项目焦点

    当我点击它时,如何从ListView中的Item禁用焦点,以便没有关注点击?解决方法以下是禁用ListView焦点的答案.在适配器中覆盖isEnabled方法并返回false.

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部