Kotlin ListView 不显示任何文本

发布于 2025-01-13 12:58:24 字数 2781 浏览 4 评论 0原文

我目前正在尝试制作一个自定义待办事项列表应用程序。我设置了一个 ListView 元素和一个带有按钮的文本字段,用于从列表中添加/删除元素。但是,当我添加元素时,没有文本显示。我知道字段添加和删除正确,唯一的问题是没有文本。 (供参考)

这是我的 Activity_main.xml:

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

<RelativeLayout 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"
    android:background="@color/white"
    android:visibility="visible"
    tools:context=".MainActivity">

    ...

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:background="@color/white"
        android:choiceMode="multipleChoice"
        android:divider="@color/black"
        android:textColor="@color/black" />
</RelativeLayout>

这是所有 Kotlin 代码:

package com.example.to_do

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.SparseBooleanArray
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.EditText
import android.widget.ListView

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

        val itemlist = arrayListOf<String>()
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, itemlist)

        val add = findViewById<Button>(R.id.add)
        val editText = findViewById<EditText>(R.id.editText)
        val listView = findViewById<ListView>(R.id.listView)
        val delete = findViewById<Button>(R.id.delete)

        listView.adapter = adapter

        add.setOnClickListener {
            val todoitem = editText.text.toString()
            if (todoitem.isEmpty() == false) {
                itemlist.add(editText.text.toString())
                adapter.notifyDataSetChanged()
            }
            editText.text.clear()
        }

        delete.setOnClickListener {
            val position: SparseBooleanArray = listView.checkedItemPositions
            val count = listView.count
            var item = count - 1
            while (item >= 0) {
                if (position.get(item)) {
                    adapter.remove(itemlist[item])
                }
                item--
            }

            position.clear()
            adapter.notifyDataSetChanged()
        }
    }
}

有人可以帮忙吗?

I am currently trying to make a custom to-do list app. I have a ListView element set up and a text field with a buttons to add/remove elements from the list. However, when I add elements, no text shows up. I know that the fields add and remove correctly, the only problem is that there is no text. (image for reference)

Here is my activity_main.xml:

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

<RelativeLayout 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"
    android:background="@color/white"
    android:visibility="visible"
    tools:context=".MainActivity">

    ...

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:background="@color/white"
        android:choiceMode="multipleChoice"
        android:divider="@color/black"
        android:textColor="@color/black" />
</RelativeLayout>

And here is all the Kotlin code:

package com.example.to_do

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.SparseBooleanArray
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.EditText
import android.widget.ListView

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

        val itemlist = arrayListOf<String>()
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, itemlist)

        val add = findViewById<Button>(R.id.add)
        val editText = findViewById<EditText>(R.id.editText)
        val listView = findViewById<ListView>(R.id.listView)
        val delete = findViewById<Button>(R.id.delete)

        listView.adapter = adapter

        add.setOnClickListener {
            val todoitem = editText.text.toString()
            if (todoitem.isEmpty() == false) {
                itemlist.add(editText.text.toString())
                adapter.notifyDataSetChanged()
            }
            editText.text.clear()
        }

        delete.setOnClickListener {
            val position: SparseBooleanArray = listView.checkedItemPositions
            val count = listView.count
            var item = count - 1
            while (item >= 0) {
                if (position.get(item)) {
                    adapter.remove(itemlist[item])
                }
                item--
            }

            position.clear()
            adapter.notifyDataSetChanged()
        }
    }
}

Can anybody help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文