通过TabLayout中的索引识别标签

问题描述 投票:1回答:1

我正在使用从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并没有帮助。

android android-tablayout
1个回答
1
投票

您可以将Web ID附加为tagTabLayout.Tab具有功能setTag(Object)

假设您将Web ID作为String值传递,然后在TabLayout.OnTabSelectedListener的功能内可以通过调用来检索标签

val tag = p0.getTag() as String
© www.soinside.com 2019 - 2024. All rights reserved.