在 TabLayout 中通过索引识别标签
Identify tabs by index in TabLayout
我正在使用我从网络上获得的名称及其对应的 ID 动态创建标签 API:
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())
}
})
有没有办法 "mark" 每个添加的标签都有一个索引或另一个自定义标识符,这样我以后可以在选择它时识别它。在侦听器中使用 p0 没有帮助。
您可以将网络 ID 附加为 标签。 TabLayout.Tab
有函数 setTag(Object).
假设您将网络 ID 作为 String
值传入,然后在 TabLayout.OnTabSelectedListener
的函数中您可以通过调用
检索标签
val tag = p0.getTag() as String
我正在使用我从网络上获得的名称及其对应的 ID 动态创建标签 API:
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())
}
})
有没有办法 "mark" 每个添加的标签都有一个索引或另一个自定义标识符,这样我以后可以在选择它时识别它。在侦听器中使用 p0 没有帮助。
您可以将网络 ID 附加为 标签。 TabLayout.Tab
有函数 setTag(Object).
假设您将网络 ID 作为 String
值传入,然后在 TabLayout.OnTabSelectedListener
的函数中您可以通过调用
val tag = p0.getTag() as String