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

将ListView添加到布局:

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

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

<?xml version="1.0" encoding="utf-8"?>    

将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布局代码如下:

<?xml version="1.0" encoding="utf-8"?>    

MainActivity.kt类的代码如下:

package net.androidly.androidlylistviewimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport android.widget.ArrayAdapterimport kotlinx.android.synthetic.main.activity_main.*import org.jetbrains.anko.toastclass 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

<?xml version="1.0" encoding="utf-8"?>        

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

android:listSelector="@drawable/list_selector"

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

更多相关文章

  1. Android 相对布局:RelativeLayout
  2. android-xml布局属性 - 随心
  3. Android常用布局
  4. Android之四大布局
  5. Android布局文件属性笔记
  6. Android如何使布局中图(ImageButton)和文字(TextView)同时获得press
  7. Android 开发之旅:view的几种布局方式及实践

随机推荐

  1. Android(安卓)通过高德地图获取地址的经
  2. Android(安卓)Studio导入第三方类库、jar
  3. Android开发工程师个人简历
  4. Android(安卓)ListView组件详解及示例代
  5. 安卓向SD卡存储数据时java.io.FileNotFou
  6. DDMS
  7. Android图片加载框架最全解析(一),Glide的基
  8. 对OAuth2认证的小结【Android】
  9. Android系列之Fragment(一)----Fragment加
  10. Android音效