我正在使用从Web API获取的名称及其对应ID来动态创建标签:
private fun getCategories() {
val url = "http://192.168.1.45/companyweb/get_categories"
val rq = Volley.newRequestQueue(this)
val jar = JsonArrayRequest(Request.Method.GET,url,null,Response.Listener { response ->
for (x in 0..response.length()-1) {
val category = Category(response.getJSONObject(x).getString("id"), response.getJSONObject(x).getString("name"))
categoryList.add(category)
val newTab = navigationTabs.newTab()
newTab.text = categoryList[x].name.toString()
navigationTabs.addTab(newTab)
}
}, Response.ErrorListener { error -> Log.d("HAVERI", error.toString()) })
rq.add(jar)
}
一旦用户选择了选项卡之一,我想有一种方法知道它对应的类别。但是我唯一能得到的就是它的R.id,例如:
com.google.android.material.tabs.TabLayout$Tab@90eb7ca
我正在使用导航选项卡的侦听器:
navigationTabs.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab?) {
}
override fun onTabUnselected(p0: TabLayout.Tab?) {
}
override fun onTabSelected(p0: TabLayout.Tab?) {
Log.d("TAG", "tab selected is " + p0.toString())
}
})
是否有一种方法可以用索引或其他自定义标识符“标记”每个添加的选项卡,以便以后在选择它时可以识别它。在侦听器中使用p0并没有帮助。
您可以将Web ID附加为tag。 TabLayout.Tab
具有功能setTag(Object)。
假设您将Web ID作为String
值传递,然后在TabLayout.OnTabSelectedListener
的功能内可以通过调用来检索标签
val tag = p0.getTag() as String