Android Kotlin ListView的使用

ListView是Android应用程序中非常常见的UI元素。它用于显示由分隔符分隔的项目列表,可以无限滚动。它通常用于显示一组相关项目。

将ListView添加到布局:


        Red
        Orange
        Yellow
        Green
        Blue
        White
        Black
        Purple
        Pink
        Gray
        Cyan Blue
        Magenta
    

现在,ListView在布局中填充为:




    


将width设置为wrap_content会将ListView行包装到其内容中。

以下是它在屏幕上的显示方式:

Android Kotlin ListView的使用_第1张图片

设置选择器和分频器颜色

使用以下ListView标记:


Android Kotlin ListView的使用_第2张图片
上面的代码使ListView可选。但是要在每个ListView行上添加逻辑,请单击我们需要使用适配器。

适配器

ListView类本身无法填充条目。适配器负责填充ListView中的数据。我们有内置的适配器类(如上所述),每个行都有内置的布局。我们也可以创建自己的自定义适配器类。

适配器具有自己的一组内置方法。以下两个是最重要的:

getView():我们可以在此方法中的适配器中扩展我们自己的布局。
notifyDataSetChanged()如果数据已更改或新数据可用,则调用适配器上的方法。

要在ListView上设置适配器,我们使用该方法setAdapter()

适配器的类型

适配器有四种主要类型:

BaseAdapter - 顾名思义,这个摘要由所有其他适配器扩展。使用此作为父类创建自定义适配器时,您需要覆盖上面提到的所有方法getCount()getId()等等。

ArrayAdapter - 使用提供的数组填充ListView。它被定义为:

var arrayAdapter = ArrayAdapter(context,layout,array);

第一个参数是上下文,后跟列表行的布局资源。
布局必须具有TextView。第三个参数是数组。

对于ArrayAdapter,您只需要覆盖该getView()方法。因为ArrayAdapter自己计算数组的大小,所以不需要getCount()

ListAdapter - 与ArrayAdapter不同,这是一个接口。因此它只能用于具体的适配器类。具体适配器类是ListActivity和ListFragment。

SimpleCursorAdapter - 当需要从数据库填充数据时使用。在它的构造函数中,我们必须指定每一行的布局以及包含需要显示的字段的Cursor实例。当我们涉及数据库时,我们将研究这个问题。

项目结构

Android Kotlin ListView的使用_第3张图片

代码

activity_main.xml布局代码如下:




    


MainActivity.kt类的代码如下:

package net.androidly.androidlylistview

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.toast

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var colorArrays = resources.getStringArray(R.array.Colors)
        var arrayAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, colorArrays)

        listView.adapter = arrayAdapter

        listView.setOnItemClickListener { adapterView, view, position: Int, id: Long ->

            toast(colorArrays[position])
        }
    }
}

在上面的代码中,我们显示了一个toast消息。我们通过添加Anko commons依赖项来达到该速记Toast功能build.gradle。

resources.getStringArray(R.array.Colors) 将存储在资源文件中的字符串数组转换为Kotlin数组。

android.R.layout.simple_list_item_1是一个内置布局,仅承载TextView

setOnItemClickListener是单击任何ListView行时触发的Kotlin函数。在这里我们可以实现我们的逻辑 函数内的四个参数是:

adapterView:选择发生的父视图。它的ListView在这里。
view:ListView中的选定视图(行)
position:适配器中行的位置。这是一个Int。
id:所选项的行ID。这很长。
我们可以从adapterView获取它,而不是使用数组检索值:

val selectedString = adapterView.getItemAtPosition(position) as String

getItemAtPosition返回该索引处的列表视图行。在这种情况下,该行是TextView。

实际应用程序的输出如下:
Android Kotlin ListView的使用_第4张图片
我们可以通过在drawable文件夹中创建一个drawable选择器来更改默认项目的按颜色。
list_selector.xml




    
    


在ListView XML标记内添加以下属性:

android:listSelector="@drawable/list_selector"

Android Kotlin ListView的使用_第5张图片

你可能感兴趣的:(Android开发)