如何在values / ids.xml中引用自定义ID

时间:2017-06-22 09:34:15

标签: android kotlin anko

我在recyclerView适配器中使用anko来创建viewholder的视图。我已成功完成此操作,但不知道如何通过视图ID使用kotlin合成来引用它(我想在不使用findViewById的情况下获取它)

值/ ids.xml

<resources>
<item name="txv1" type="id"/>
<item name="txv2" type="id"/>

My Anko getView代码:

private fun getView(context: Context): View{
        return with(context){
            linearLayout {
                lparams(width = matchParent, height = wrapContent)
                padding = dip(10)
                orientation = android.widget.LinearLayout.HORIZONTAL

                //Task Number
                textView {
                    id = R.id.txv1
                    text = "TextView 22"
                    textSize = 16f
                    typeface = Typeface.MONOSPACE
                    padding =dip(5)
                }.lparams(){
                    weight = 1f
                }

                //Task Name
                textView {
                    id = R.id.txv2
                    text= "TextView 33"
                    textSize = 16f
                    typeface = android.graphics.Typeface.DEFAULT_BOLD
                    padding =dip(5)
                }
            }
        }
    }

我是从ids.xml分配自定义ID但是如何在没有findViewById的情况下获取自定义ID

由于

1 个答案:

答案 0 :(得分:2)

在研究了很多之后,我得出的结论是,现在不可能通过anko创建的视图直接引用 解决方法是使用 -

val txv1 = findViewById(R.id.txv1) as TextView

OR
声明一个变量来保存anko方法中创建的视图的引用 代码如下 -

    var txv1: TextView? = null

    private fun getView(context: Context): View{
        return with(context){
            linearLayout {        
                txv1 = textView {
                    text = "TextView"
                }
            }
        }
    }

希望这会对别人有所帮助。感谢