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行包装到其内容中。

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

设置选择器和分频器颜色

使用以下ListView标记:


上面的代码使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实例。当我们涉及数据库时,我们将研究这个问题。

项目结构

代码

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。

实际应用程序的输出如下:

我们可以通过在drawable文件夹中创建一个drawable选择器来更改默认项目的按颜色。
list_selector.xml

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

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

android:listSelector="@drawable/list_selector"

更多相关文章

  1. Android震动---启动、循环、取消控制
  2. Android面试系列文章2018之Android部分之ViewPager篇
  3. 官方NotePad实例学习--ListActivity的使用
  4. Android面试系列文章2018之Android部分之ViewPager篇
  5. 【Android(安卓)应用开发】Android资源文件 - 使用资源存储字符
  6. Android(安卓)学习笔记——利用JNI技术在Android中调用、调试C++
  7. Android学习之ListView使用基础
  8. android中获取网络图片
  9. Android(安卓)ViewPager2+Fragment+TabLayout的简单使用

随机推荐

  1. 使用python纯手写的一款音乐下载应用程序
  2. 【DB宝31】Oracle DG环境中主库使用rman
  3. JavaScript: 购物车全选自动计算金额和取
  4. 【DB笔试面试845】在Oracle中,sqlnet.ora
  5. 【DB笔试面试66】在Oracle中,关于锁,下列描
  6. 【DB笔试面试571】在Oracle中,如何提高DML
  7. 【DB笔试面试249】在Oracle中,生成备库控
  8. 容器 - container基本介绍和命令示范(5)
  9. 【DB笔试面试573】在Oracle中,常用Hint有
  10. 【DB笔试面试356】在Oracle数据库中,丢失