【发布时间】:2021-12-28 22:02:23
【问题描述】:
我有一个应用程序从 API 请求中获取信息,然后显示设备列表。经过几个小时梳理文档后,我无法弄清楚如何格式化从ArrayAdapter 创建的视图。本质上,如果设备有错误,我想在按钮右侧显示一个红色圆圈,如果没有错误,则显示一个绿色按钮。
deviceList 是我试图在其中显示按钮列表的 ListView 的名称。 deviceNames 是一个包含设备名称的字符串数组。
创建的 TextViews 也是可点击的,这是 onItemClickListener 正在处理的。此部分有效,但我想保留它,因为我确实需要按钮来启动显示设备特定信息的活动。
理想情况下,我想创建一个模板,我可以只更改文本的值和指示器的颜色
下面是我的代码:
// List of device names
val listView: ListView = findViewById(R.id.deviceList)
val arrayAdapter1: ArrayAdapter<*>
arrayAdapter1 = ArrayAdapter(
this@Homepage,
R.layout.device_button,
deviceNames
)
listView.setAdapter(arrayAdapter1)
listView.onItemClickListener =
AdapterView.OnItemClickListener { parent, view, position, id ->
val pos = position
println(pos)
val device = jsonArray.getJSONObject(pos)
val ID = device.get("id") as String
println(ID)
goToDeviceDetail(ID)
}
以下是device_button 的 XML 文件。我尝试在此处添加格式,并实质上为按钮创建了一个模板,该模板允许我更改指示器的文本和颜色,但它不仅仅是一个 TextView,这让我很生气。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical"
android:textColor="#25383C"
/>
下面是我希望它看起来像的按钮。我可能只会将背景设为纯色,而不是下图中的图像:
【问题讨论】:
标签: android kotlin listview android-arrayadapter