android - 如何根据json数组长度在设计中添加动态复选框?
问题描述
我想在线性布局中添加动态复选框,并且该复选框应根据 API 中 JSON 数组的大小变为。
我的 API 响应是这样的:
[ {“id”:1,“alertName”:“设备”},{“id”:2,“alertName”:“电子邮件”}]
解决方案
超级简单!
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/rooView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"/>
item_checkbox.xml
<?xml version="1.0" encoding="utf-8"?>
<CheckBox
android:id="@+id/checkbox"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var jsonArray = getJsonArray()
for (i in 0 until jsonArray.length()) {
var checkBox = LayoutInflater.from(this)
.inflate(R.layout.item_checkbox, rooView, false) as CheckBox
checkBox.text = jsonArray[i].toString()
rooView.addView(checkBox)
}
}
private fun getJsonArray(): JSONArray {
var jsonObject: JSONObject = JSONObject()
var jsonArray = JSONArray()
jsonArray.put("Charlie")
jsonArray.put("Buddy")
jsonArray.put("Oscar")
jsonArray.put("Milo")
jsonArray.put("Archie")
jsonArray.put("Ollie")
jsonObject.put("pets", jsonArray)
return jsonArray
}
}
推荐阅读
- javascript - 如何从嵌套的对象数组中显示可点击的表格?
- python - Keras:如何从 LSTM 的几层中检索隐藏状态和/或单元状态?
- symfony - 使用 EntityType 获取其他实体中不存在的数据
- google-cloud-platform - 降低 Cloud Run on GKE 成本
- c# - 按下屏幕时移动立方体
- java - 为映射属性找到不明确的映射方法(java.util.Map 和 java.util.Object)
- mysql - 如何提高 Insert INTO (...) 选择查询的性能?
- c# - 如何将taskscheduler相关ID传递给c#参数程序
- docker - 启动基于容器(开发)环境的最佳实践
- json - 需要使用 Spring Boot 从 OpenWeather json 获取温度